mirror of
https://github.com/dhewm/dhewm3.git
synced 2024-12-04 02:03:43 +00:00
3ad384a0da
idInterpreter::Push() is used only for int and (reinterpreted) float values, not pointers (as far as I can tell), so 32bit values on all relevant platforms. It stored its value as intptr_t at `&localstack[ localstackUsed ]` - on 64bit platforms intptr_t is 64bit. Unfortunately, all code reading from the stack just get got a pointer to `&localstack[ localstackUsed ]` in the type they want to read (like `int*` or `float*`) and read that. On Little Endian that happens to work, on 64bit Big Endian it reads the wrong 4 bytes of the intptr_t, so it doesn't work. fixes #625, #472 |
||
---|---|---|
.. | ||
Script_Compiler.cpp | ||
Script_Compiler.h | ||
Script_Interpreter.cpp | ||
Script_Interpreter.h | ||
Script_Program.cpp | ||
Script_Program.h | ||
Script_Thread.cpp | ||
Script_Thread.h |