[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