[Scummvm-cvs-logs] SF.net SVN: scummvm:[44093] scummvm/trunk/engines/sci
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Tue Sep 15 00:34:53 CEST 2009
Revision: 44093
http://scummvm.svn.sourceforge.net/scummvm/?rev=44093&view=rev
Author: fingolfin
Date: 2009-09-14 22:34:53 +0000 (Mon, 14 Sep 2009)
Log Message:
-----------
SCI: Misc cleanup
Modified Paths:
--------------
scummvm/trunk/engines/sci/console.cpp
scummvm/trunk/engines/sci/engine/kmisc.cpp
scummvm/trunk/engines/sci/engine/kstring.cpp
scummvm/trunk/engines/sci/engine/memobj.h
scummvm/trunk/engines/sci/engine/savegame.cpp
scummvm/trunk/engines/sci/engine/seg_manager.cpp
scummvm/trunk/engines/sci/engine/seg_manager.h
Modified: scummvm/trunk/engines/sci/console.cpp
===================================================================
--- scummvm/trunk/engines/sci/console.cpp 2009-09-14 22:24:30 UTC (rev 44092)
+++ scummvm/trunk/engines/sci/console.cpp 2009-09-14 22:34:53 UTC (rev 44093)
@@ -1488,7 +1488,7 @@
case MEM_OBJ_DYNMEM: {
DebugPrintf("dynmem (%s): %d bytes\n",
- (*(DynMem *)mobj)._description ? (*(DynMem *)mobj)._description : "no description", (*(DynMem *)mobj)._size);
+ (*(DynMem *)mobj)._description.c_str(), (*(DynMem *)mobj)._size);
Common::hexdump((*(DynMem *)mobj)._buf, (*(DynMem *)mobj)._size, 16, 0);
}
Modified: scummvm/trunk/engines/sci/engine/kmisc.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kmisc.cpp 2009-09-14 22:24:30 UTC (rev 44092)
+++ scummvm/trunk/engines/sci/engine/kmisc.cpp 2009-09-14 22:34:53 UTC (rev 44093)
@@ -175,7 +175,6 @@
if (!s->segMan->allocDynmem(argv[1].toUint16(), "kMemory() critical", &s->r_acc)) {
error("Critical heap allocation failed");
}
- return s->r_acc;
break;
case K_MEMORY_ALLOCATE_NONCRITICAL :
s->segMan->allocDynmem(argv[1].toUint16(), "kMemory() non-critical", &s->r_acc);
@@ -234,7 +233,6 @@
WRITE_LE_UINT16(ref, argv[2].offset); // ?
}
}
- return s->r_acc;
break;
}
}
Modified: scummvm/trunk/engines/sci/engine/kstring.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/kstring.cpp 2009-09-14 22:24:30 UTC (rev 44092)
+++ scummvm/trunk/engines/sci/engine/kstring.cpp 2009-09-14 22:34:53 UTC (rev 44093)
@@ -367,12 +367,10 @@
if (s->_gameName.equalsIgnoreCase("lsl5") && s->currentRoomNumber() == 155)
lsl5PasswordWorkaround = true;
- const char* dst = (const char *)dest; // used just for code beautification purposes
-
if ((argc == 2) &&
/* Our pathfinder already works around the issue we're trying to fix */
(strcmp(s->segMan->getDescription(argv[0]), AVOIDPATH_DYNMEM_STRING) != 0) &&
- ((strlen(dst) < 2) || (!lsl5PasswordWorkaround && !is_print_str(dst)))) {
+ ((strlen(dest) < 2) || (!lsl5PasswordWorkaround && !is_print_str(dest)))) {
// SQ4 array handling detected
#ifndef SCUMM_BIG_ENDIAN
int odd = argv[1].toUint16() & 1;
Modified: scummvm/trunk/engines/sci/engine/memobj.h
===================================================================
--- scummvm/trunk/engines/sci/engine/memobj.h 2009-09-14 22:24:30 UTC (rev 44092)
+++ scummvm/trunk/engines/sci/engine/memobj.h 2009-09-14 22:34:53 UTC (rev 44093)
@@ -557,14 +557,12 @@
// Free-style memory
struct DynMem : public MemObject {
int _size;
- char *_description;
+ Common::String _description;
byte *_buf;
public:
- DynMem() : _size(0), _description(0), _buf(0) {}
+ DynMem() : _size(0), _buf(0) {}
~DynMem() {
- free(_description);
- _description = NULL;
free(_buf);
_buf = NULL;
}
Modified: scummvm/trunk/engines/sci/engine/savegame.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/savegame.cpp 2009-09-14 22:24:30 UTC (rev 44092)
+++ scummvm/trunk/engines/sci/engine/savegame.cpp 2009-09-14 22:34:53 UTC (rev 44093)
@@ -420,7 +420,7 @@
void DynMem::saveLoadWithSerializer(Common::Serializer &s) {
s.syncAsSint32LE(_size);
- syncCStr(s, &_description);
+ s.syncString(_description);
if (!_buf && _size) {
_buf = (byte *)calloc(_size, 1);
}
Modified: scummvm/trunk/engines/sci/engine/seg_manager.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.cpp 2009-09-14 22:24:30 UTC (rev 44092)
+++ scummvm/trunk/engines/sci/engine/seg_manager.cpp 2009-09-14 22:34:53 UTC (rev 44093)
@@ -302,7 +302,7 @@
if (nameReg.isNull())
return "<no name>";
- const char *name = (const char*)dereference(obj->_variables[SCRIPT_NAME_SELECTOR], NULL);
+ const char *name = derefString(obj->_variables[SCRIPT_NAME_SELECTOR]);
if (!name)
return "<invalid name>";
@@ -930,18 +930,13 @@
return mobj->dereference(pointer, size);
}
-static void *_kernel_dereference_pointer(SegManager *segMan, reg_t pointer, int entries, int align) {
+static void *_kernel_dereference_pointer(SegManager *segMan, reg_t pointer, int entries) {
int maxsize;
void *retval = segMan->dereference(pointer, &maxsize);
if (!retval)
return NULL;
- if (pointer.offset & (align - 1)) {
- warning("Unaligned pointer read: %04x:%04x expected with %d alignment", PRINT_REG(pointer), align);
- return NULL;
- }
-
if (entries > maxsize) {
warning("Trying to dereference pointer %04x:%04x beyond end of segment", PRINT_REG(pointer));
return NULL;
@@ -951,15 +946,21 @@
}
byte *SegManager::derefBulkPtr(reg_t pointer, int entries) {
- return (byte *)_kernel_dereference_pointer(this, pointer, entries, 1);
+ return (byte *)_kernel_dereference_pointer(this, pointer, entries);
}
reg_t *SegManager::derefRegPtr(reg_t pointer, int entries) {
- return (reg_t *)_kernel_dereference_pointer(this, pointer, entries, sizeof(reg_t));
+ const int align = sizeof(reg_t);
+ if (pointer.offset & (align - 1)) {
+ warning("Unaligned pointer read: %04x:%04x expected with %d alignment", PRINT_REG(pointer), align);
+ return NULL;
+ }
+
+ return (reg_t *)_kernel_dereference_pointer(this, pointer, entries);
}
char *SegManager::derefString(reg_t pointer, int entries) {
- return (char *)_kernel_dereference_pointer(this, pointer, entries, 1);
+ return (char *)_kernel_dereference_pointer(this, pointer, entries);
}
@@ -977,7 +978,7 @@
else
d._buf = (byte *)malloc(size);
- d._description = strdup(descr);
+ d._description = descr;
return (byte *)(d._buf);
}
@@ -990,7 +991,7 @@
switch (mobj->getType()) {
case MEM_OBJ_DYNMEM:
- return (*(DynMem *)mobj)._description;
+ return (*(DynMem *)mobj)._description.c_str();
default:
return "";
}
Modified: scummvm/trunk/engines/sci/engine/seg_manager.h
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.h 2009-09-14 22:24:30 UTC (rev 44092)
+++ scummvm/trunk/engines/sci/engine/seg_manager.h 2009-09-14 22:34:53 UTC (rev 44093)
@@ -312,16 +312,6 @@
const char *getDescription(reg_t addr);
- // 10. Reserved segments
-
- // Reserves a special-purpose segment
- // Parameters: (char *) name: A string name identifying the segment (the string is cloned and retained)
- // Returns : A fresh segment ID for the segment in question
- // Reserved segments are never used by the segment manager. They can be used to tag special-purpose addresses.
- // Segment 0 is implicitly reserved for numbers.
- //SegmentId sm_allocate_reserved_segment(char *name);
-
-
// Generic Operations on Segments and Addresses
/**
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