diff options
author | trav90 <travawine@palemoon.org> | 2018-09-02 18:59:51 -0500 |
---|---|---|
committer | trav90 <travawine@palemoon.org> | 2018-09-02 20:07:47 -0500 |
commit | 36cb80d1cac66a1511bec4ad97947a2deeab2e08 (patch) | |
tree | 71212ddd26aa7a37b5ef4c5390e3e33c4db69c94 /js/src/frontend/Parser.cpp | |
parent | b4aed63f5758b955e84840c5871b1301ccb6968f (diff) | |
download | UXP-36cb80d1cac66a1511bec4ad97947a2deeab2e08.tar UXP-36cb80d1cac66a1511bec4ad97947a2deeab2e08.tar.gz UXP-36cb80d1cac66a1511bec4ad97947a2deeab2e08.tar.lz UXP-36cb80d1cac66a1511bec4ad97947a2deeab2e08.tar.xz UXP-36cb80d1cac66a1511bec4ad97947a2deeab2e08.zip |
Call the relevant scope-data constructor when allocating it, and poison/mark as undefined the memory for the trailing array of BindingNames, ratther than impermissibly PodZero-ing non-trivial classes.
Diffstat (limited to 'js/src/frontend/Parser.cpp')
-rw-r--r-- | js/src/frontend/Parser.cpp | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/js/src/frontend/Parser.cpp b/js/src/frontend/Parser.cpp index 343621194..7bfab87a3 100644 --- a/js/src/frontend/Parser.cpp +++ b/js/src/frontend/Parser.cpp @@ -1453,13 +1453,11 @@ template <typename Scope> static typename Scope::Data* NewEmptyBindingData(ExclusiveContext* cx, LifoAlloc& alloc, uint32_t numBindings) { + using Data = typename Scope::Data; size_t allocSize = Scope::sizeOfData(numBindings); - auto* bindings = static_cast<typename Scope::Data*>(alloc.alloc(allocSize)); - if (!bindings) { + auto* bindings = alloc.allocInSize<Data>(allocSize, numBindings); + if (!bindings) ReportOutOfMemory(cx); - return nullptr; - } - PodZero(bindings); return bindings; } |