diff --git a/src/kumir2-libs/vm/vm.hpp b/src/kumir2-libs/vm/vm.hpp index e8f6d41cc03960ddea046d8b72044b31be8cd53a..04085f0cd83703c049468dff3f2e66bbc353cc4b 100644 --- a/src/kumir2-libs/vm/vm.hpp +++ b/src/kumir2-libs/vm/vm.hpp @@ -598,6 +598,12 @@ void KumirVM::setProgram(const Bytecode::Data &program, bool isMain, const Strin breakpointsTable_.registerSourceFileName(filename, e.module); } else if (e.type==EL_INIT ) { + if (moduleContexts_[currentModuleContext].globals.size() <= e.module) { + moduleContexts_[currentModuleContext].globals.resize(e.module + 1); + moduleContexts_[currentModuleContext].globals[e.module].reserve(256); + moduleContexts_[currentModuleContext].moduleNames.resize(e.module + 1); + moduleContexts_[currentModuleContext].moduleNames[e.module] = e.moduleLocalizedName; + } uint8_t key = e.module; moduleContexts_[currentModuleContext].inits.push_back(e); breakpointsTable_.registerSourceFileName(filename, e.module);