diff options
author | Johannes Schickel | 2008-08-02 11:57:06 +0000 |
---|---|---|
committer | Johannes Schickel | 2008-08-02 11:57:06 +0000 |
commit | 0cbaaf736b44c758422ede4c2a09adec5b1b24bb (patch) | |
tree | 6cd2738406512a68c3ca8d475077f83ce978257d /engines/kyra | |
parent | 8c5360c8331e82208d56de8a82bacd95f7d010d6 (diff) | |
download | scummvm-rg350-0cbaaf736b44c758422ede4c2a09adec5b1b24bb.tar.gz scummvm-rg350-0cbaaf736b44c758422ede4c2a09adec5b1b24bb.tar.bz2 scummvm-rg350-0cbaaf736b44c758422ede4c2a09adec5b1b24bb.zip |
Proper fix for bug #2035459 "KYRA1: long savegame names cause garbage".
svn-id: r33519
Diffstat (limited to 'engines/kyra')
-rw-r--r-- | engines/kyra/gui_lok.cpp | 5 | ||||
-rw-r--r-- | engines/kyra/gui_lok.h | 2 | ||||
-rw-r--r-- | engines/kyra/gui_v2.cpp | 1 |
3 files changed, 5 insertions, 3 deletions
diff --git a/engines/kyra/gui_lok.cpp b/engines/kyra/gui_lok.cpp index 11c13319d8..47ce698e50 100644 --- a/engines/kyra/gui_lok.cpp +++ b/engines/kyra/gui_lok.cpp @@ -530,7 +530,7 @@ int GUI_LoK::resumeGame(Button *button) { void GUI_LoK::setupSavegames(Menu &menu, int num) { Common::InSaveFile *in; - static char savenames[5][31]; + static char savenames[5][35]; uint8 startSlot; assert(num <= 5); @@ -549,7 +549,8 @@ void GUI_LoK::setupSavegames(Menu &menu, int num) { KyraEngine_v1::SaveHeader header; for (int i = startSlot; i < num && uint(_savegameOffset + i) < _saveSlots.size(); i++) { if ((in = _vm->openSaveForReading(_vm->getSavegameFilename(_saveSlots[i + _savegameOffset]), header))) { - strncpy(savenames[i], header.description.c_str(), 31); + strncpy(savenames[i], header.description.c_str(), ARRAYSIZE(savenames[0])); + savenames[i][34] = 0; menu.item[i].itemString = savenames[i]; menu.item[i].enabled = 1; menu.item[i].saveSlot = _saveSlots[i + _savegameOffset]; diff --git a/engines/kyra/gui_lok.h b/engines/kyra/gui_lok.h index 92b72fd059..16b7ef9183 100644 --- a/engines/kyra/gui_lok.h +++ b/engines/kyra/gui_lok.h @@ -162,7 +162,7 @@ private: bool _menuRestoreScreen; uint8 _toplevelMenu; int _savegameOffset; - char _savegameName[40]; + char _savegameName[35]; const char *_specialSavegameString; Common::KeyState _keyPressed; int8 _mouseWheel; diff --git a/engines/kyra/gui_v2.cpp b/engines/kyra/gui_v2.cpp index 2819c4f077..e4cec760fa 100644 --- a/engines/kyra/gui_v2.cpp +++ b/engines/kyra/gui_v2.cpp @@ -456,6 +456,7 @@ void GUI_v2::setupSavegameNames(Menu &menu, int num) { for (int i = startSlot; i < num && uint(_savegameOffset + i) < _saveSlots.size(); ++i) { if ((in = _vm->openSaveForReading(_vm->getSavegameFilename(_saveSlots[i + _savegameOffset]), header)) != 0) { strncpy(getTableString(menu.item[i].itemId), header.description.c_str(), 80); + getTableString(menu.item[i].itemId)[79] = 0; menu.item[i].saveSlot = _saveSlots[i + _savegameOffset]; menu.item[i].enabled = true; delete in; |