[Scummvm-git-logs] scummvm master -> 5196ae1cd49b879f0497c5ad863dfa6dfebe61c7

dreammaster paulfgilbert at gmail.com
Sun Apr 28 07:28:40 CEST 2019


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
5196ae1cd4 GLK: GLULXE: init_dispatch wasn't being called


Commit: 5196ae1cd49b879f0497c5ad863dfa6dfebe61c7
    https://github.com/scummvm/scummvm/commit/5196ae1cd49b879f0497c5ad863dfa6dfebe61c7
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2019-04-28T15:27:52+10:00

Commit Message:
GLK: GLULXE: init_dispatch wasn't being called

Changed paths:
    engines/glk/glk_types.h
    engines/glk/glulxe/glkop.cpp
    engines/glk/glulxe/glulxe.cpp
    engines/glk/glulxe/glulxe.h


diff --git a/engines/glk/glk_types.h b/engines/glk/glk_types.h
index 4d32d5c..3c233ff 100644
--- a/engines/glk/glk_types.h
+++ b/engines/glk/glk_types.h
@@ -222,7 +222,7 @@ union gidispatch_rock_t {
 	uint num;
 	void *ptr;
 
-	gidispatch_rock_t() : num(0), ptr(nullptr) {}
+	gidispatch_rock_t() : ptr(nullptr) {}
 };
 
 union gluniversal_union {
diff --git a/engines/glk/glulxe/glkop.cpp b/engines/glk/glulxe/glkop.cpp
index 2595a87..68e60c7 100644
--- a/engines/glk/glulxe/glkop.cpp
+++ b/engines/glk/glulxe/glkop.cpp
@@ -91,11 +91,6 @@ void Glulxe::glkopInit() {
 bool Glulxe::init_dispatch() {
 	int ix;
 
-	/* What with one thing and another, this *could* be called more than
-	   once. We only need to allocate the tables once. */
-	if (classes)
-		return true;
-
 	/* Set up the game-ID hook. (This is ifdeffed because not all Glk
 	   libraries have this call.) */
 #ifdef GI_DISPA_GAME_ID_AVAILABLE
diff --git a/engines/glk/glulxe/glulxe.cpp b/engines/glk/glulxe/glulxe.cpp
index 617bcb0..5251b30 100644
--- a/engines/glk/glulxe/glulxe.cpp
+++ b/engines/glk/glulxe/glulxe.cpp
@@ -30,24 +30,26 @@ namespace Glulxe {
 Glulxe *g_vm;
 
 Glulxe::Glulxe(OSystem *syst, const GlkGameDescription &gameDesc) : GlkAPI(syst, gameDesc), _random("glulxe"),
-	vm_exited_cleanly(false), gamefile_start(0), gamefile_len(0), memmap(nullptr), stack(nullptr),
-	ramstart(0), endgamefile(0), origendmem(0),  stacksize(0), startfuncaddr(0), checksum(0),
-	stackptr(0), frameptr(0), pc(0), prevpc(0), origstringtable(0), stringtable(0), valstackbase(0),
-	localsbase(0), endmem(0), protectstart(0), protectend(0),
-	stream_char_handler(nullptr), stream_unichar_handler(nullptr),
-	// main
-	library_autorestore_hook(nullptr),
-	// accel
-	classes_table(0), indiv_prop_start(0), class_metaclass(0), object_metaclass(0),
-	routine_metaclass(0), string_metaclass(0), self(0), num_attr_bytes(0), cpv__start(0),
-	accelentries(nullptr),
-	// heap
-	heap_start(0), alloc_count(0), heap_head(nullptr), heap_tail(nullptr),
-	// serial
-	max_undo_level(8), undo_chain_size(0), undo_chain_num(0), undo_chain(nullptr), ramcache(nullptr),
-	// string
-	iosys_mode(0), iosys_rock(0), tablecache_valid(false), glkio_unichar_han_ptr(nullptr) {
+		vm_exited_cleanly(false), gamefile_start(0), gamefile_len(0), memmap(nullptr), stack(nullptr),
+		ramstart(0), endgamefile(0), origendmem(0),  stacksize(0), startfuncaddr(0), checksum(0),
+		stackptr(0), frameptr(0), pc(0), prevpc(0), origstringtable(0), stringtable(0), valstackbase(0),
+		localsbase(0), endmem(0), protectstart(0), protectend(0),
+		stream_char_handler(nullptr), stream_unichar_handler(nullptr),
+		// main
+		library_autorestore_hook(nullptr),
+		// accel
+		classes_table(0), indiv_prop_start(0), class_metaclass(0), object_metaclass(0),
+		routine_metaclass(0), string_metaclass(0), self(0), num_attr_bytes(0), cpv__start(0),
+		accelentries(nullptr),
+		// heap
+		heap_start(0), alloc_count(0), heap_head(nullptr), heap_tail(nullptr),
+		// serial
+		max_undo_level(8), undo_chain_size(0), undo_chain_num(0), undo_chain(nullptr), ramcache(nullptr),
+		// string
+		iosys_mode(0), iosys_rock(0), tablecache_valid(false), glkio_unichar_han_ptr(nullptr) {
 	g_vm = this;
+
+	glkopInit();
 }
 
 void Glulxe::runGame() {
@@ -55,6 +57,9 @@ void Glulxe::runGame() {
 		return;
 
 	setup_vm();
+	if (!init_dispatch())
+		return;
+
 	if (library_autorestore_hook)
 		library_autorestore_hook();
 
diff --git a/engines/glk/glulxe/glulxe.h b/engines/glk/glulxe/glulxe.h
index cdb3735..b5f13dc 100644
--- a/engines/glk/glulxe/glulxe.h
+++ b/engines/glk/glulxe/glulxe.h
@@ -719,7 +719,7 @@ public:
 		_random.setSeed(seed);
 	}
 	inline uint glulx_random() {
-		return _random.getRandomNumber(0xffffffff);
+		return _random.getRandomNumber(0xfffffff);
 	}
 
 	void glulx_sort(void *addr, int count, int size, int(*comparefunc)(const void *p1, const void *p2));





More information about the Scummvm-git-logs mailing list