[Scummvm-git-logs] scummvm master -> 620b574adcef6e8e0fc2a1af1d4fb7797683947f
sev-
noreply at scummvm.org
Fri Jul 24 09:36:44 UTC 2026
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
620b574adc CHAMBER: resolve global constructor in global array
Commit: 620b574adcef6e8e0fc2a1af1d4fb7797683947f
https://github.com/scummvm/scummvm/commit/620b574adcef6e8e0fc2a1af1d4fb7797683947f
Author: meekee7 (michael_kuerbis at web.de)
Date: 2026-07-24T11:36:40+02:00
Commit Message:
CHAMBER: resolve global constructor in global array
Changed paths:
engines/chamber/chamber.cpp
engines/chamber/script.cpp
engines/chamber/script.h
diff --git a/engines/chamber/chamber.cpp b/engines/chamber/chamber.cpp
index b3df8987e3a..4fb341d518e 100644
--- a/engines/chamber/chamber.cpp
+++ b/engines/chamber/chamber.cpp
@@ -55,6 +55,8 @@ ChamberEngine::ChamberEngine(OSystem *syst, const ADGameDescription *desc)
g_vm = this;
_gameDescription = desc;
+ initScriptVars();
+
const Common::FSNode gameDataDir(ConfMan.getPath("path"));
// Don't forget to register your random source
diff --git a/engines/chamber/script.cpp b/engines/chamber/script.cpp
index d529d9977e5..adfd6eab76f 100644
--- a/engines/chamber/script.cpp
+++ b/engines/chamber/script.cpp
@@ -60,20 +60,25 @@ byte *script_ptr, *script_end_ptr;
byte *script_stack[5 * 2];
byte **script_stack_ptr = script_stack;
-void *script_vars[kScrPools_MAX] = {
- &script_word_vars,
- &script_word_vars,
- &script_byte_vars,
- inventory_items,
- zones_data,
- pers_list,
- inventory_items,
- inventory_items + kItemZapstik1 - 1,
- pers_list
-};
+void *script_vars[kScrPools_MAX] = {};
extern void askDisk2(void);
+
+void initScriptVars() {
+ // Late init of global array entries to avoid having a global constructor
+
+ script_vars[0] = &script_word_vars;
+ script_vars[1] = &script_word_vars;
+ script_vars[2] = &script_byte_vars;
+ script_vars[3] = inventory_items;
+ script_vars[4] = zones_data;
+ script_vars[5] = pers_list;
+ script_vars[6] = inventory_items;
+ script_vars[7] = inventory_items + kItemZapstik1 - 1;
+ script_vars[8] = pers_list;
+}
+
/*
Get next random byte value
*/
diff --git a/engines/chamber/script.h b/engines/chamber/script.h
index 9be50c3de2c..4bdca474524 100644
--- a/engines/chamber/script.h
+++ b/engines/chamber/script.h
@@ -240,6 +240,8 @@ uint16 runCommandKeepSp(void);
uint16 Swap16(uint16 x);
+void initScriptVars();
+
} // End of namespace Chamber
#endif
More information about the Scummvm-git-logs
mailing list