diff --git a/Engine/source/console/compiledEval.cpp b/Engine/source/console/compiledEval.cpp index 21eed56a9..236feea49 100644 --- a/Engine/source/console/compiledEval.cpp +++ b/Engine/source/console/compiledEval.cpp @@ -116,9 +116,6 @@ U32 _ITER = 0; ///< Stack pointer for iterStack. ConsoleValue stack[MaxStackSize]; S32 _STK = 0; -char curFieldArray[256]; -char prevFieldArray[256]; - const char* tsconcat(const char* strA, const char* strB, S32& outputLen) { S32 lenA = dStrlen(strA); diff --git a/Engine/source/console/console.cpp b/Engine/source/console/console.cpp index 643baa421..5872d7061 100644 --- a/Engine/source/console/console.cpp +++ b/Engine/source/console/console.cpp @@ -1549,22 +1549,23 @@ ConsoleValue evaluatef(const char* string, ...) ConsoleValue _internalExecute(S32 argc, ConsoleValue argv[]) { StringTableEntry funcName = StringTable->insert(argv[0].getString()); - - const char** argv_str = static_cast(malloc((argc - 1) * sizeof(char *))); - for (int i = 0; i < argc - 1; i++) + if (argc > 1) { - argv_str[i] = argv[i + 1].getString(); + const char** argv_str = static_cast(malloc((argc - 1) * sizeof(char*))); + for (int i = 0; i < argc - 1; i++) + { + argv_str[i] = argv[i + 1].getString(); + } + bool result; + const char* methodRes = CInterface::CallFunction(NULL, funcName, argv_str, argc - 1, &result); + free(argv_str); + if (result) + { + ConsoleValue ret; + ret.setString(methodRes); + return std::move(ret); + } } - bool result; - const char* methodRes = CInterface::CallFunction(NULL, funcName, argv_str, argc - 1, &result); - free(argv_str); - if (result) - { - ConsoleValue ret; - ret.setString(methodRes); - return std::move(ret); - } - Namespace::Entry *ent; ent = Namespace::global()->lookup(funcName); @@ -1636,22 +1637,24 @@ static ConsoleValue _internalExecute(SimObject *object, S32 argc, ConsoleValue a } StringTableEntry funcName = StringTable->insert(argv[0].getString()); - - const char** argv_str = static_cast(malloc((argc - 2) * sizeof(char *))); - for (int i = 0; i < argc - 2; i++) + if (argc > 2) { - argv_str[i] = argv[i + 2].getString(); - } - bool result; - const char* methodRes = CInterface::CallMethod(object, funcName, argv_str, argc - 2, &result); + const char** argv_str = static_cast(malloc((argc - 2) * sizeof(char*))); + for (int i = 0; i < argc - 2; i++) + { + argv_str[i] = argv[i + 2].getString(); + } + bool result; + const char* methodRes = CInterface::CallMethod(object, funcName, argv_str, argc - 2, &result); - free(argv_str); + free(argv_str); - if (result) - { - ConsoleValue val; - val.setString(methodRes); - return val; + if (result) + { + ConsoleValue val; + val.setString(methodRes); + return val; + } } if(object->getNamespace()) diff --git a/Engine/source/persistence/taml/taml.cpp b/Engine/source/persistence/taml/taml.cpp index 74beffe24..6bb1910cf 100644 --- a/Engine/source/persistence/taml/taml.cpp +++ b/Engine/source/persistence/taml/taml.cpp @@ -644,18 +644,20 @@ ImplementEnumType(_TamlFormatMode, // Fetch field count. const U32 fieldCount = fieldList.size(); - ConsoleObject* defaultConObject; - SimObject* defaultObject; + ConsoleObject* defaultConObject = NULL; + SimObject* defaultObject = NULL; if (!getWriteDefaults()) { // Create a default object of the same type defaultConObject = ConsoleObject::create(pSimObject->getClassName()); + if (!defaultConObject) + return; defaultObject = dynamic_cast(defaultConObject); - // ***Really*** shouldn't happen - if (!defaultObject) - return; } + // ***Really*** shouldn't happen + if (!defaultConObject || !defaultObject) + return; // Iterate fields. U8 arrayDepth = 0; @@ -754,7 +756,7 @@ ImplementEnumType(_TamlFormatMode, } // Save field/value. - if (arrayDepth > 0 || pField->elementCount > 1) + if (currentArrayNode && (arrayDepth > 0 || pField->elementCount > 1)) currentArrayNode->getChildren()[elementIndex]->addField(fieldName, pFieldValue); else {