diff options
author | Paul Gilbert | 2011-04-19 21:02:27 +1000 |
---|---|---|
committer | Paul Gilbert | 2011-04-19 21:02:27 +1000 |
commit | 5dcfd1e32c185e88b09a3ff1341aaf78b674572b (patch) | |
tree | 4fe644352cae7e509eda6282a436025bfd95380c /engines/tsage/saveload.h | |
parent | d18f8e8564de7feb890ca8fe183c6508c64acc41 (diff) | |
download | scummvm-rg350-5dcfd1e32c185e88b09a3ff1341aaf78b674572b.tar.gz scummvm-rg350-5dcfd1e32c185e88b09a3ff1341aaf78b674572b.tar.bz2 scummvm-rg350-5dcfd1e32c185e88b09a3ff1341aaf78b674572b.zip |
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.
Diffstat (limited to 'engines/tsage/saveload.h')
-rw-r--r-- | engines/tsage/saveload.h | 8 |
1 files changed, 5 insertions, 3 deletions
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<SavedObject *> _objList; + Common::List<SavedObject *> _objList; FunctionList<bool> _saveNotifiers; FunctionList<bool> _loadNotifiers; Common::List<SaveListener *> _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; |