From c957d69512450a8dc9b6bbc2bb33b3e91cc15e61 Mon Sep 17 00:00:00 2001 From: Dan Raviv Date: Tue, 16 Feb 2021 13:24:52 +0200 Subject: [PATCH] [Bugfix] Fix varArrayToNSArray and varObjectToNSDictionary handling of nested arrays var::isObject() returns true for array variants, so it must be tested after var::isArray() --- .../juce_core/native/juce_ObjCHelpers_mac.h | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/juce_core/native/juce_ObjCHelpers_mac.h b/modules/juce_core/native/juce_ObjCHelpers_mac.h index e622b836f7fe..eb1b096873c7 100644 --- a/modules/juce_core/native/juce_ObjCHelpers_mac.h +++ b/modules/juce_core/native/juce_ObjCHelpers_mac.h @@ -102,17 +102,17 @@ inline NSDictionary* varObjectToNSDictionary (const var& varToParse) const var& valueVar = properties.getValueAt (i); - if (valueVar.isObject()) + if (valueVar.isArray()) { - auto* valueDictionary = varObjectToNSDictionary (valueVar); + auto* valueArray = varArrayToNSArray (valueVar); - [dictionary setObject: valueDictionary forKey: keyString]; + [dictionary setObject: valueArray forKey: keyString]; } - else if (valueVar.isArray()) + else if (valueVar.isObject()) { - auto* valueArray = varArrayToNSArray (valueVar); + auto* valueDictionary = varObjectToNSDictionary (valueVar); - [dictionary setObject: valueArray forKey: keyString]; + [dictionary setObject: valueDictionary forKey: keyString]; } else { @@ -139,17 +139,17 @@ inline NSArray* varArrayToNSArray (const var& varToParse) for (const auto& aVar : *varArray) { - if (aVar.isObject()) + if (aVar.isArray()) { - auto* valueDictionary = varObjectToNSDictionary (aVar); + auto* valueArray = varArrayToNSArray (aVar); - [array addObject: valueDictionary]; + [array addObject: valueArray]; } - else if (aVar.isArray()) + else if (aVar.isObject()) { - auto* valueArray = varArrayToNSArray (aVar); + auto* valueDictionary = varObjectToNSDictionary (aVar); - [array addObject: valueArray]; + [array addObject: valueDictionary]; } else {