[Scummvm-cvs-logs] SF.net SVN: scummvm:[44243] scummvm/trunk/engines/sci/engine
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Tue Sep 22 02:36:06 CEST 2009
Revision: 44243
http://scummvm.svn.sourceforge.net/scummvm/?rev=44243&view=rev
Author: fingolfin
Date: 2009-09-22 00:36:05 +0000 (Tue, 22 Sep 2009)
Log Message:
-----------
SCI: Change SystemString::name from char* to Common::String
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/game.cpp
scummvm/trunk/engines/sci/engine/savegame.cpp
scummvm/trunk/engines/sci/engine/segment.cpp
scummvm/trunk/engines/sci/engine/segment.h
Modified: scummvm/trunk/engines/sci/engine/game.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/game.cpp 2009-09-22 00:35:46 UTC (rev 44242)
+++ scummvm/trunk/engines/sci/engine/game.cpp 2009-09-22 00:36:05 UTC (rev 44243)
@@ -335,7 +335,7 @@
// Allocate static buffer for savegame and CWD directories
SystemString *str = &s->sys_strings->strings[SYS_STRING_SAVEDIR];
- str->name = strdup("savedir");
+ str->_name = "savedir";
str->max_size = MAX_SAVE_DIR_SIZE;
str->value = (reg_t *)calloc(MAX_SAVE_DIR_SIZE, sizeof(reg_t)); // FIXME -- sizeof(char) or sizeof(reg_t) ??
str->value[0].segment = s->string_frag_segment; // Set to empty string
@@ -439,7 +439,7 @@
s->status_bar_background = !s->resMan->isVGA() ? 15 : 255;
SystemString *str = &s->sys_strings->strings[SYS_STRING_PARSER_BASE];
- str->name = strdup("parser-base");
+ str->_name = "parser-base";
str->max_size = MAX_PARSER_BASE;
str->value = (reg_t *)calloc(MAX_PARSER_BASE + 1, sizeof(char)); // FIXME -- sizeof(char) or sizeof(reg_t) ??
str->value[0].segment = s->string_frag_segment; // Set to empty string
Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp 2009-09-22 00:35:46 UTC (rev 44242)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp 2009-09-22 00:36:05 UTC (rev 44243)
@@ -437,7 +437,7 @@
}
static void sync_SystemString(Common::Serializer &s, SystemString &obj) {
- syncCStr(s, &obj.name);
+ s.syncString(obj._name);
s.syncAsSint32LE(obj.max_size);
// FIXME: This is a *WEIRD* hack: We sync a reg_t* as if it was a string.
Modified: scummvm/trunk/engines/sci/engine/segment.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/segment.cpp 2009-09-22 00:35:46 UTC (rev 44242)
+++ scummvm/trunk/engines/sci/engine/segment.cpp 2009-09-22 00:36:05 UTC (rev 44243)
@@ -275,13 +275,13 @@
}
bool SystemStrings::isValidOffset(uint16 offset) const {
- return offset < SYS_STRINGS_MAX && strings[offset].name;
+ return offset < SYS_STRINGS_MAX && !strings[offset]._name.empty();
}
byte *SystemStrings::dereference(reg_t pointer, int *size) {
if (size)
*size = strings[pointer.offset].max_size;
- if (pointer.offset < SYS_STRINGS_MAX && strings[pointer.offset].name)
+ if (isValidOffset(pointer.offset))
return (byte *)(strings[pointer.offset].value);
// This occurs in KQ5CD when interacting with certain objects
Modified: scummvm/trunk/engines/sci/engine/segment.h
===================================================================
--- scummvm/trunk/engines/sci/engine/segment.h 2009-09-22 00:35:46 UTC (rev 44242)
+++ scummvm/trunk/engines/sci/engine/segment.h 2009-09-22 00:36:05 UTC (rev 44243)
@@ -133,7 +133,7 @@
};
struct SystemString {
- char *name;
+ Common::String _name;
int max_size;
reg_t *value;
};
@@ -143,15 +143,15 @@
public:
SystemStrings() : SegmentObj(SEG_TYPE_SYS_STRINGS) {
- memset(strings, 0, sizeof(strings));
+ for (int i = 0; i < SYS_STRINGS_MAX; i++) {
+ strings[i].max_size = 0;
+ strings[i].value = 0;
+ }
}
~SystemStrings() {
for (int i = 0; i < SYS_STRINGS_MAX; i++) {
SystemString *str = &strings[i];
- if (str->name) {
- free(str->name);
- str->name = NULL;
-
+ if (!str->_name.empty()) {
free(str->value);
str->value = NULL;
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