std::move needs to be used with pointers, we werent doing that and so a temp var was being copied onto the heap when it should of stayed on the stack. This caused memory leaks
Namespace Leaks: these leaks would have been freed on app kill but they were still contaminating the log so free em.
Con::shutdown: gGlobablVars again another leak that would of been freed on app kill
AssetManager onRemove should be clearing its lists
Scripting language needs a free for its strings these destructors free after the rule is executed so the data is cached internally and then freed. This may be needed for other types in the union (should not be used on nodes just raw data)
Changed:
if check on vals now return true if the value has a string value
%val = "test me" if(%val) will now return true since %val is not null
Script side:
string checks for "true" and "false" will now be parsed as integer values of 1 and 0.
TEST VIGOUROUSLY
now torquescript will print out a more modern error message with a pointer to the offending character.
Multi line error outputs to be added to this for context
If the statement is a terminating statement on slot assignment (such as %var[%i]++;), the stack has to be popped everytime slot arrays are used regardless of the expression type.
unlike in the straight compile it now case it does in fact need to stick around. read injects the CodeBlock into a management system, so no worries about cleanup
Con::EvalResult CodeBlock::exec -
objectCreationStackIndex needs to be signed as we test if it goes sub-zero
ConsoleValue Namespace::Entry::execute -
compiler yells about returning a temp via std::move
bool TorqueScriptRuntime::executeFile -
report the name of the dso output file, not the source scxript input file