diff options
author | Willem Jan Palenstijn | 2009-02-27 19:38:20 +0000 |
---|---|---|
committer | Willem Jan Palenstijn | 2009-02-27 19:38:20 +0000 |
commit | fb552121d234ab200caf8857f007df57085ca7ec (patch) | |
tree | de52e69df49a35c9d5730ef1253e975aa9cfed57 | |
parent | ede680738b5594d8400bb3c60f284d6c1020cdda (diff) | |
download | scummvm-rg350-fb552121d234ab200caf8857f007df57085ca7ec.tar.gz scummvm-rg350-fb552121d234ab200caf8857f007df57085ca7ec.tar.bz2 scummvm-rg350-fb552121d234ab200caf8857f007df57085ca7ec.zip |
fix warnings and memleaks in savegame.cfsml
svn-id: r38933
-rw-r--r-- | engines/sci/engine/savegame.cfsml | 4 | ||||
-rw-r--r-- | engines/sci/engine/savegame.cpp | 4 | ||||
-rw-r--r-- | engines/sci/engine/seg_manager.cpp | 7 | ||||
-rw-r--r-- | engines/sci/engine/state.h | 4 | ||||
-rw-r--r-- | engines/sci/engine/vm.h | 2 |
5 files changed, 12 insertions, 9 deletions
diff --git a/engines/sci/engine/savegame.cfsml b/engines/sci/engine/savegame.cfsml index 3317abf5a0..e59467ed60 100644 --- a/engines/sci/engine/savegame.cfsml +++ b/engines/sci/engine/savegame.cfsml @@ -737,9 +737,9 @@ int gamestate_save(EngineState *s, Common::WriteStream *fh, const char* savename SavegameMetadata *meta = new SavegameMetadata; meta->savegame_version = FREESCI_CURRENT_SAVEGAME_VERSION; - meta->savegame_name = savename; + meta->savegame_name = sci_strdup(savename); meta->version = s->version; - meta->game_version = s->game_version; + meta->game_version = sci_strdup(s->game_version); meta->savegame_date = ((curTime.tm_mday & 0xFF) << 24) | (((curTime.tm_mon + 1) & 0xFF) << 16) | ((curTime.tm_year + 1900) & 0xFFFF); meta->savegame_time = ((curTime.tm_hour & 0xFF) << 16) | (((curTime.tm_min) & 0xFF) << 8) | ((curTime.tm_sec) & 0xFF); fprintf(stderr, "date/time: %d %d\n", meta->savegame_date, meta->savegame_time); diff --git a/engines/sci/engine/savegame.cpp b/engines/sci/engine/savegame.cpp index 0ea6cbbe8b..da8389167f 100644 --- a/engines/sci/engine/savegame.cpp +++ b/engines/sci/engine/savegame.cpp @@ -4791,9 +4791,9 @@ int gamestate_save(EngineState *s, Common::WriteStream *fh, const char* savename SavegameMetadata *meta = new SavegameMetadata; meta->savegame_version = FREESCI_CURRENT_SAVEGAME_VERSION; - meta->savegame_name = savename; + meta->savegame_name = sci_strdup(savename); meta->version = s->version; - meta->game_version = s->game_version; + meta->game_version = sci_strdup(s->game_version); meta->savegame_date = ((curTime.tm_mday & 0xFF) << 24) | (((curTime.tm_mon + 1) & 0xFF) << 16) | ((curTime.tm_year + 1900) & 0xFFFF); meta->savegame_time = ((curTime.tm_hour & 0xFF) << 16) | (((curTime.tm_min) & 0xFF) << 8) | ((curTime.tm_sec) & 0xFF); fprintf(stderr, "date/time: %d %d\n", meta->savegame_date, meta->savegame_time); diff --git a/engines/sci/engine/seg_manager.cpp b/engines/sci/engine/seg_manager.cpp index 9811505adb..977e3f808d 100644 --- a/engines/sci/engine/seg_manager.cpp +++ b/engines/sci/engine/seg_manager.cpp @@ -252,8 +252,9 @@ int SegManager::deallocate(int seg, bool recursive) { break; case MEM_OBJ_DYNMEM: - if (mobj->data.dynmem.buf) - free(mobj->data.dynmem.buf); + free(mobj->data.dynmem.description); + mobj->data.dynmem.description = NULL; + free(mobj->data.dynmem.buf); mobj->data.dynmem.buf = NULL; break; case MEM_OBJ_SYS_STRINGS: @@ -1398,7 +1399,7 @@ unsigned char *SegManager::allocDynmem(int size, const char *descr, reg_t *addr) else mobj->data.dynmem.buf = (byte*) sci_malloc(size); - mobj->data.dynmem.description = descr; + mobj->data.dynmem.description = sci_strdup(descr); return (unsigned char *)(mobj->data.dynmem.buf); } diff --git a/engines/sci/engine/state.h b/engines/sci/engine/state.h index 8d49b0b184..173059f042 100644 --- a/engines/sci/engine/state.h +++ b/engines/sci/engine/state.h @@ -86,7 +86,9 @@ struct drawn_pic_t { // Savegame metadata struct SavegameMetadata { - const char *savegame_name; + SavegameMetadata() : savegame_name(0), game_version(0) { } + ~SavegameMetadata() { free(savegame_name); free(game_version); } + char *savegame_name; int savegame_version; char *game_version; sci_version_t version; diff --git a/engines/sci/engine/vm.h b/engines/sci/engine/vm.h index bd71dc6438..608f9b7550 100644 --- a/engines/sci/engine/vm.h +++ b/engines/sci/engine/vm.h @@ -267,7 +267,7 @@ DECLARE_HEAPENTRY(hunk) struct dynmem_t { int size; - const char *description; + char *description; byte *buf; }; /* Free-style memory */ |