[Scummvm-cvs-logs] SF.net SVN: scummvm:[45113] scummvm/trunk/engines/sci/engine/kstring.cpp
waltervn at users.sourceforge.net
waltervn at users.sourceforge.net
Thu Oct 15 13:57:37 CEST 2009
Revision: 45113
http://scummvm.svn.sourceforge.net/scummvm/?rev=45113&view=rev
Author: waltervn
Date: 2009-10-15 11:57:36 +0000 (Thu, 15 Oct 2009)
Log Message:
-----------
SCI: Add support for reg_t based segments to Message()
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/kstring.cpp
Modified: scummvm/trunk/engines/sci/engine/kstring.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kstring.cpp 2009-10-15 11:47:05 UTC (rev 45112)
+++ scummvm/trunk/engines/sci/engine/kstring.cpp 2009-10-15 11:57:36 UTC (rev 45113)
@@ -670,20 +670,35 @@
s->_msgState->lastQuery(module, msg);
- byte *buffer = s->_segMan->derefBulkPtr(argv[1], 10);
+ bool ok = false;
- if (buffer) {
- assert(s->_segMan->dereference(argv[1]).isRaw);
+ if (s->_segMan->dereference(argv[1]).isRaw) {
+ byte *buffer = s->_segMan->derefBulkPtr(argv[1], 10);
- WRITE_LE_UINT16(buffer, module);
- WRITE_LE_UINT16(buffer + 2, msg.noun);
- WRITE_LE_UINT16(buffer + 4, msg.verb);
- WRITE_LE_UINT16(buffer + 6, msg.cond);
- WRITE_LE_UINT16(buffer + 8, msg.seq);
+ if (buffer) {
+ ok = true;
+ WRITE_LE_UINT16(buffer, module);
+ WRITE_LE_UINT16(buffer + 2, msg.noun);
+ WRITE_LE_UINT16(buffer + 4, msg.verb);
+ WRITE_LE_UINT16(buffer + 6, msg.cond);
+ WRITE_LE_UINT16(buffer + 8, msg.seq);
+ }
} else {
- warning("Message: buffer %04x:%04x invalid or too small to hold the tuple", PRINT_REG(argv[1]));
+ reg_t *buffer = s->_segMan->derefRegPtr(argv[1], 5);
+
+ if (buffer) {
+ ok = true;
+ buffer[0] = make_reg(0, module);
+ buffer[1] = make_reg(0, msg.noun);
+ buffer[2] = make_reg(0, msg.verb);
+ buffer[3] = make_reg(0, msg.cond);
+ buffer[4] = make_reg(0, msg.seq);
+ }
}
+ if (!ok)
+ warning("Message: buffer %04x:%04x invalid or too small to hold the tuple", PRINT_REG(argv[1]));
+
return NULL_REG;
}
default:
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list