From 5dcfd1e32c185e88b09a3ff1341aaf78b674572b Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Tue, 19 Apr 2011 21:02:27 +1000 Subject: TSAGE: Reworked the saving code to fix crashes Note that this undoes the recent compilation fix for GCC, since it didn't work. For now, used an explicit void ** conversion as previously suggested. --- engines/tsage/saveload.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'engines/tsage/saveload.h') diff --git a/engines/tsage/saveload.h b/engines/tsage/saveload.h index 945d144ae5..c45271b8fc 100644 --- a/engines/tsage/saveload.h +++ b/engines/tsage/saveload.h @@ -54,8 +54,8 @@ struct tSageSavegameHeader { // FIXME: workaround to supress spurious strict-alias warnings on older GCC // versions. this should be resolved with the savegame rewrite #define SYNC_POINTER(x) do { \ - SavedObject *y = (SavedObject *)x; \ - s.syncPointer(&y); \ + SavedObject **y = (SavedObject **)((void *)&x); \ + s.syncPointer(y); \ } while (false) #define SYNC_ENUM(FIELD, TYPE) int v_##FIELD = (int)FIELD; s.syncAsUint16LE(v_##FIELD); \ @@ -176,7 +176,7 @@ typedef SavedObject *(*SavedObjectFactory)(const Common::String &className); class Saver { private: - SynchronisedList _objList; + Common::List _objList; FunctionList _saveNotifiers; FunctionList _loadNotifiers; Common::List _listeners; @@ -212,6 +212,8 @@ public: bool getMacroSaveFlag() const { return _macroSaveFlag; } bool getMacroRestoreFlag() const { return _macroRestoreFlag; } int blockIndexOf(SavedObject *p); + int getObjectCount() const; + void listObjects(); }; extern Saver *_saver; -- cgit v1.2.3