[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