Skip to content

Commit

Permalink
GLK: GLULXE: init_dispatch wasn't being called
Browse files Browse the repository at this point in the history
  • Loading branch information
dreammaster committed Apr 28, 2019
1 parent 70febd0 commit 5196ae1
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 24 deletions.
2 changes: 1 addition & 1 deletion engines/glk/glk_types.h
Expand Up @@ -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 {
Expand Down
5 changes: 0 additions & 5 deletions engines/glk/glulxe/glkop.cpp
Expand Up @@ -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
Expand Down
39 changes: 22 additions & 17 deletions engines/glk/glulxe/glulxe.cpp
Expand Up @@ -30,31 +30,36 @@ 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() {
if (!is_gamefile_valid())
return;

setup_vm();
if (!init_dispatch())
return;

if (library_autorestore_hook)
library_autorestore_hook();

Expand Down
2 changes: 1 addition & 1 deletion engines/glk/glulxe/glulxe.h
Expand Up @@ -719,7 +719,7 @@ class Glulxe : public GlkAPI {
_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));
Expand Down

0 comments on commit 5196ae1

Please sign in to comment.