diff options
Diffstat (limited to 'engines/prince/script.cpp')
-rw-r--r-- | engines/prince/script.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/engines/prince/script.cpp b/engines/prince/script.cpp index e40492fe27..d6d325181c 100644 --- a/engines/prince/script.cpp +++ b/engines/prince/script.cpp @@ -1015,6 +1015,12 @@ void Interpreter::O_XORFLAG() { void Interpreter::O_GETMOBTEXT() { int32 mob = readScriptFlagValue(); _currentString = _vm->_locationNr * 100 + mob + 60001; + // FIXME: UB? + // This casts away the constness of the pointer returned by c_str() which is + // stored and potentially modified later (for example in printAt()). + // Also, the pointer is only valid as long as _vm->_mobList[mob] + // is around and _vm->_mobList[mob]._examText hasn't been modified by any of its + // non-const member functions which also might or might not be a problem. _string = (byte *)_vm->_mobList[mob]._examText.c_str(); debugInterpreter("O_GETMOBTEXT mob %d", mob); } @@ -1831,6 +1837,12 @@ void Interpreter::O_DISABLENAK() { void Interpreter::O_GETMOBNAME() { int32 modId = readScriptFlagValue(); + // FIXME: UB? + // This casts away the constness of the pointer returned by c_str() which is + // stored and potentially modified later (for example in printAt()). + // Also, the pointer is only valid as long as _vm->_mobList[mobId] + // is around and _vm->_mobList[mobId]._name hasn't been modified by any of its + // non-const member functions which also might or might not be a problem. _string = (byte *)_vm->_mobList[modId]._name.c_str(); debugInterpreter("O_GETMOBNAME modId %d", modId); } |