{
engine = asCreateScriptEngine();
engine->SetMessageCallback(asMETHOD(CBufferedOutStream, Callback), &bout, asCALL_THISCALL);
bout.buffer = "";
mod = engine->GetModule("test", asGM_ALWAYS_CREATE);
mod->AddScriptSection("test",
"shared funcdef void TestFunc();"
"shared class TestBase"
"{"
" void callfn(TestFunc@ fn)"
" {"
" }"
" void test()"
" {"
" callfn( function() { } );"
" } "
"};"
);
r = mod->Build();
if (r < 0)
TEST_FAILED;
asIScriptModule *mod2 = engine->GetModule("test2", asGM_ALWAYS_CREATE);
mod2->AddScriptSection("test",
"external shared funcdef void TestFunc();"
"external shared class TestBase;"
"class Test : TestBase"
"{"
"};"
);
r = mod2->Build();
if (r < 0)
TEST_FAILED;
CBytecodeStream bc1("test");
r = mod->SaveByteCode(&bc1); assert(r >= 0);
if (r < 0)
TEST_FAILED;
CBytecodeStream bc2("test2");
r = mod2->SaveByteCode(&bc2); assert(r >= 0);
if (r < 0)
TEST_FAILED;
engine->ShutDownAndRelease();
engine = asCreateScriptEngine();
engine->SetMessageCallback(asMETHOD(CBufferedOutStream, Callback), &bout, asCALL_THISCALL);
mod = engine->GetModule("test", asGM_ALWAYS_CREATE);
r = mod->LoadByteCode(&bc1);
if (r < 0)
TEST_FAILED;
mod2 = engine->GetModule("test2", asGM_ALWAYS_CREATE);
r = mod2->LoadByteCode(&bc2);
if (r < 0)
TEST_FAILED;
if (bout.buffer != "")
{
PRINTF("%s", bout.buffer.c_str());
TEST_FAILED;
}
engine->ShutDownAndRelease();
}
When preparing and executing the above code, it stops with the following error.
(0, 0) : Error : LoadByteCode failed. The bytecode is invalid. Number of bytes read from stream: 287