[Scummvm-cvs-logs] SF.net SVN: scummvm:[40305] scummvm/trunk/engines/sci/engine
fingolfin at users.sourceforge.net
fingolfin at users.sourceforge.net
Mon May 4 17:04:55 CEST 2009
Revision: 40305
http://scummvm.svn.sourceforge.net/scummvm/?rev=40305&view=rev
Author: fingolfin
Date: 2009-05-04 15:04:55 +0000 (Mon, 04 May 2009)
Log Message:
-----------
SCI: Fixed savestate loading
Modified Paths:
--------------
scummvm/trunk/engines/sci/engine/seg_manager.cpp
scummvm/trunk/engines/sci/engine/vm.h
Modified: scummvm/trunk/engines/sci/engine/seg_manager.cpp
===================================================================
--- scummvm/trunk/engines/sci/engine/seg_manager.cpp 2009-05-04 15:04:39 UTC (rev 40304)
+++ scummvm/trunk/engines/sci/engine/seg_manager.cpp 2009-05-04 15:04:55 UTC (rev 40305)
@@ -361,11 +361,10 @@
}
void Script::freeScript() {
- if (buf) {
- free(buf);
- buf = NULL;
- buf_size = 0;
- }
+ free(buf);
+ buf = NULL;
+ buf_size = 0;
+
if (objects) {
for (int i = 0; i < objects_nr; i++) {
Object *object = &objects[i];
@@ -381,7 +380,9 @@
}
delete obj_indices;
+ obj_indices = 0;
free(code);
+ code = 0;
}
// memory operations
@@ -1042,16 +1043,15 @@
Clone *SegManager::alloc_Clone(reg_t *addr) {
- MemObject *mobj;
CloneTable *table;
int offset;
if (!Clones_seg_id) {
- mobj = allocNonscriptSegment(MEM_OBJ_CLONES, &(Clones_seg_id));
+ table = (CloneTable *)allocNonscriptSegment(MEM_OBJ_CLONES, &(Clones_seg_id));
+ table->initTable();
} else
- mobj = _heap[Clones_seg_id];
+ table = (CloneTable *)_heap[Clones_seg_id];
- table = (CloneTable *)mobj;
offset = table->allocEntry();
*addr = make_reg(Clones_seg_id, offset);
@@ -1059,16 +1059,15 @@
}
List *SegManager::alloc_List(reg_t *addr) {
- MemObject *mobj;
ListTable *table;
int offset;
if (!Lists_seg_id) {
- mobj = allocNonscriptSegment(MEM_OBJ_LISTS, &(Lists_seg_id));
+ table = (ListTable *)allocNonscriptSegment(MEM_OBJ_LISTS, &(Lists_seg_id));
+ table->initTable();
} else
- mobj = _heap[Lists_seg_id];
+ table = (ListTable *)_heap[Lists_seg_id];
- table = (ListTable *)mobj;
offset = table->allocEntry();
*addr = make_reg(Lists_seg_id, offset);
@@ -1076,16 +1075,15 @@
}
Node *SegManager::alloc_Node(reg_t *addr) {
- MemObject *mobj;
NodeTable *table;
int offset;
if (!Nodes_seg_id) {
- mobj = allocNonscriptSegment(MEM_OBJ_NODES, &(Nodes_seg_id));
+ table = (NodeTable *)allocNonscriptSegment(MEM_OBJ_NODES, &(Nodes_seg_id));
+ table->initTable();
} else
- mobj = _heap[Nodes_seg_id];
+ table = (NodeTable *)_heap[Nodes_seg_id];
- table = (NodeTable *)mobj;
offset = table->allocEntry();
*addr = make_reg(Nodes_seg_id, offset);
@@ -1093,16 +1091,15 @@
}
Hunk *SegManager::alloc_Hunk(reg_t *addr) {
- MemObject *mobj;
HunkTable *table;
int offset;
if (!Hunks_seg_id) {
- mobj = allocNonscriptSegment(MEM_OBJ_HUNK, &(Hunks_seg_id));
+ table = (HunkTable *)allocNonscriptSegment(MEM_OBJ_HUNK, &(Hunks_seg_id));
+ table->initTable();
} else
- mobj = _heap[Hunks_seg_id];
+ table = (HunkTable *)_heap[Hunks_seg_id];
- table = (HunkTable *)mobj;
offset = table->allocEntry();
*addr = make_reg(Hunks_seg_id, offset);
Modified: scummvm/trunk/engines/sci/engine/vm.h
===================================================================
--- scummvm/trunk/engines/sci/engine/vm.h 2009-05-04 15:04:39 UTC (rev 40304)
+++ scummvm/trunk/engines/sci/engine/vm.h 2009-05-04 15:04:55 UTC (rev 40305)
@@ -406,9 +406,6 @@
Entry *table;
public:
- Table() {
- initTable();
- }
~Table() {
// FIXME: Shouldn't we make sure that all table entries are disposed
// of properly?
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