diff --git a/engines/dreamweb/segment.h b/engines/dreamweb/segment.h index 9464015478c..65bc2335ea7 100644 --- a/engines/dreamweb/segment.h +++ b/engines/dreamweb/segment.h @@ -56,6 +56,11 @@ public: } inline ~WordRef() { + // FIXME: This is _too late_ to write back the + // value. Example: in the call + // printDirect(data.word(kLastxpos), .....) + // the destructor isn't called until after printDirect returns. This + // destroys the modifications to lastXPos that printDirect makes. _data[0] = _value & 0xff; _data[1] = _value >> 8; _value = _data[0] | (_data[1] << 8); diff --git a/engines/dreamweb/use.cpp b/engines/dreamweb/use.cpp index 4be3c7a6b32..ba1e8e4952b 100644 --- a/engines/dreamweb/use.cpp +++ b/engines/dreamweb/use.cpp @@ -1581,7 +1581,8 @@ void DreamGenContext::withWhat() { copyName(data.byte(kObjecttype), data.byte(kCommand), commandLine); printMessage2(100, 21, 63, 200, false, 2); - printDirect(commandLine, data.word(kLastxpos) + 5, 21, 220, false); + uint16 x = data.word(kLastxpos) + 5; + printDirect(commandLine, x, 21, 220, false); printMessage2(data.word(kLastxpos) + 5, 21, 63, 200, false, 3); fillRyan();