mirror of
https://github.com/TorqueGameEngines/Torque3D.git
synced 2026-01-19 20:24:49 +00:00
various fixes and memory corruption bug.
This commit is contained in:
parent
27a4868b6e
commit
35b33f1864
|
|
@ -55,7 +55,7 @@ bool CInterface::_isMethod(const char* className, const char* methodName) const
|
|||
if (mIsMethodCallback)
|
||||
return mIsMethodCallback(className, methodName);
|
||||
|
||||
return NULL;
|
||||
return false;
|
||||
}
|
||||
|
||||
const char* CInterface::_CallFunction(const char* nameSpace, const char* name, const char **argv, int argc, bool *result) const
|
||||
|
|
@ -93,4 +93,4 @@ TORQUE_API void SetCallbacks(void* ptr, void* methodPtr, void* isMethodPtr, void
|
|||
CInterface::GetCInterface().SetCallMethodCallback(methodPtr);
|
||||
CInterface::GetCInterface().SetCallIsMethodCallback(isMethodPtr);
|
||||
CInterface::GetCInterface().SetMainCallback(mainPtr);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1643,13 +1643,13 @@ static ConsoleValue _internalExecute(SimObject *object, S32 argc, ConsoleValue a
|
|||
{
|
||||
ConsoleValue val;
|
||||
val.setString(methodRes);
|
||||
return std::move(val);
|
||||
return val;
|
||||
}
|
||||
|
||||
if(object->getNamespace())
|
||||
{
|
||||
U32 ident = object->getId();
|
||||
const char* oldIdent = argv[1].getString();
|
||||
const char* oldIdent = dStrdup(argv[1].getString());
|
||||
|
||||
Namespace::Entry *ent = object->getNamespace()->lookup(funcName);
|
||||
|
||||
|
|
@ -1671,8 +1671,9 @@ static ConsoleValue _internalExecute(SimObject *object, S32 argc, ConsoleValue a
|
|||
|
||||
// Twiddle it back
|
||||
argv[1].setString(oldIdent);
|
||||
dFree(oldIdent);
|
||||
|
||||
return std::move(ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
warnf(ConsoleLogEntry::Script, "Con::execute - %d has no namespace: %s", object->getId(), funcName);
|
||||
|
|
|
|||
|
|
@ -2971,7 +2971,8 @@ DefineEngineStringlyVariadicMethod( SimObject, call, const char*, 3, 0, "( strin
|
|||
"@param args Zero or more arguments for the method.\n"
|
||||
"@return The result of the method call." )
|
||||
{
|
||||
argv[1].setString(argv[2]);
|
||||
argv[1].setString(argv[2].getString());
|
||||
|
||||
ConsoleValue returnValue = Con::execute(object, argc - 1, argv + 1);
|
||||
return Con::getReturnBuffer(returnValue.getString());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -969,8 +969,6 @@ TEST(Script, MiscRegressions)
|
|||
|
||||
ASSERT_EQ(regression4.getFloat(), 0.5);
|
||||
|
||||
Con::setBoolVariable("$Debug::DumpByteCode", true);
|
||||
|
||||
ConsoleValue regression5 = RunScript(R"(
|
||||
function noOpInc()
|
||||
{
|
||||
|
|
@ -982,6 +980,33 @@ TEST(Script, MiscRegressions)
|
|||
)");
|
||||
|
||||
ASSERT_EQ(regression5.getInt(), 2);
|
||||
|
||||
ConsoleValue regression6 = RunScript(R"(
|
||||
function SimObject::crashMe(%this, %line)
|
||||
{
|
||||
return %line @ "1";
|
||||
}
|
||||
|
||||
function doTest()
|
||||
{
|
||||
%obj = new SimObject();
|
||||
for (%i = 0; %i < 99999; %i++)
|
||||
{
|
||||
%function = "crashMe";
|
||||
if (%obj.isMethod(%function))
|
||||
{
|
||||
%line = "abcdefg";
|
||||
%output = %obj.call(%function, %line);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return doTest();
|
||||
)");
|
||||
|
||||
ASSERT_EQ(regression6.getBool(), true);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
|||
Loading…
Reference in a new issue