From 6fc4d5aac6e1f58ae930ec0ec713a51e344a09bc Mon Sep 17 00:00:00 2001 From: jules Date: Mon, 18 Apr 2016 10:58:32 +0100 Subject: [PATCH] Fixed a bug in the Javascript parser involving array dereferencing --- modules/juce_core/javascript/juce_Javascript.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/modules/juce_core/javascript/juce_Javascript.cpp b/modules/juce_core/javascript/juce_Javascript.cpp index c25784bd18..44bc7a6c1c 100644 --- a/modules/juce_core/javascript/juce_Javascript.cpp +++ b/modules/juce_core/javascript/juce_Javascript.cpp @@ -410,7 +410,9 @@ struct JavascriptEngine::RootObject : public DynamicObject var getResult (const Scope& s) const override { - if (const Array* array = object->getResult (s).getArray()) + var arrayVar (object->getResult (s)); // must stay alive for the scope of this method + + if (const Array* array = arrayVar.getArray()) return (*array) [static_cast (index->getResult (s))]; return var::undefined(); @@ -418,7 +420,9 @@ struct JavascriptEngine::RootObject : public DynamicObject void assign (const Scope& s, const var& newValue) const override { - if (Array* array = object->getResult (s).getArray()) + var arrayVar (object->getResult (s)); // must stay alive for the scope of this method + + if (Array* array = arrayVar.getArray()) { const int i = index->getResult (s); while (array->size() < i)