void Code::Init()
{
engine=asCreateScriptEngine(ANGELSCRIPT_VERSION);
if(!engine)
{
allegro_message("Failed to create script engine.");
return;
}
engine->SetMessageCallback(asFUNCTION(MessageCallback), 0, asCALL_CDECL);
asIScriptContext *context = engine->CreateContext();
if(!context)
{
allegro_message("Failed to create the context.");
engine->Release();
return;
}
engine->Discard(0);
if(engine->AddScriptSection(0, "script", script, scriptlen-1)<0)
{
allegro_message("AddScriptSection() failed");
return;
}
if(engine->Build(0)<0)
{
allegro_message("Build() failed");
return;
}
iClientLoop=engine->GetFunctionIDByName(0, "ClientLoop");
if(iClientLoop==asNO_MODULE)allegro_message("The module was not found.");
if(iClientLoop==asERROR)allegro_message("The module was not compiled successfully.");
if(iClientLoop==asMULTIPLE_FUNCTIONS)allegro_message("Found multiple matching functions.");
if(iClientLoop==asNO_FUNCTION)allegro_message("blah blah");
ready=true;
allegro_message("%i",iClientLoop);
context->Prepare(iClientLoop); //will not crash
context->Execute();
}
void Code::Run()
{
if(ready)
{
context->Prepare(iClientLoop); //will crash
}
}
🎉 Celebrating 25 Years of GameDev.net! 🎉
Not many can claim 25 years on the Internet! Join us in celebrating this milestone. Learn more about our history, and thank you for being a part of our community!
crash when Prepare()ing
Hi...
I wonder what I might have done wrong this time but I just can't figure out why my program always crashes on Prepare(id). Getting the id of the function using GetFunctionIDByName(0, "name") works fine (it returns something positive). The function I want to Prepare() is empty for testing purpose.
However... I noticed that calls to Prepare() won't crash if they are in the same code block where AngelScript has been initialized before.
Any idea?
In Code::Init() you're declaring a local asIScriptContext variable, so the class member that Code::Run() is using has actually never been initialized (unless you're initializing it somewhere else).
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement