[Scummvm-cvs-logs] scummvm master -> 3185dac25e2f1984ccf92e7c33eee12caa6cd676

wjp wjp at usecode.org
Sat Dec 17 16:40:56 CET 2011


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:
3185dac25e DREAMWEB: Work around runtime limitation


Commit: 3185dac25e2f1984ccf92e7c33eee12caa6cd676
    https://github.com/scummvm/scummvm/commit/3185dac25e2f1984ccf92e7c33eee12caa6cd676
Author: Willem Jan Palenstijn (wjp at usecode.org)
Date: 2011-12-17T07:40:15-08:00

Commit Message:
DREAMWEB: Work around runtime limitation

The WordRef accessor writes back its value too late. 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.

Changed paths:
    engines/dreamweb/segment.h
    engines/dreamweb/use.cpp



diff --git a/engines/dreamweb/segment.h b/engines/dreamweb/segment.h
index 9464015..65bc233 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 4be3c7a..ba1e8e4 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();






More information about the Scummvm-git-logs mailing list