[Scummvm-cvs-logs] SF.net SVN: scummvm:[33518] scummvm/trunk/engines/kyra

lordhoto at users.sourceforge.net lordhoto at users.sourceforge.net
Sat Aug 2 13:40:09 CEST 2008


Revision: 33518
          http://scummvm.svn.sourceforge.net/scummvm/?rev=33518&view=rev
Author:   lordhoto
Date:     2008-08-02 11:40:09 +0000 (Sat, 02 Aug 2008)

Log Message:
-----------
Fix for bug #2035459 "KYRA1: long savegame names cause garbage".

Modified Paths:
--------------
    scummvm/trunk/engines/kyra/gui_lok.cpp
    scummvm/trunk/engines/kyra/gui_lok.h
    scummvm/trunk/engines/kyra/gui_v2.h
    scummvm/trunk/engines/kyra/saveload.cpp

Modified: scummvm/trunk/engines/kyra/gui_lok.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui_lok.cpp	2008-08-02 09:24:10 UTC (rev 33517)
+++ scummvm/trunk/engines/kyra/gui_lok.cpp	2008-08-02 11:40:09 UTC (rev 33518)
@@ -673,7 +673,7 @@
 		length = strlen(_savegameName);
 
 		if (_keyPressed.ascii > 31 && _keyPressed.ascii < 127) {
-			if (length < 31) {
+			if (length < ARRAYSIZE(_savegameName)-1) {
 				_savegameName[length] = _keyPressed.ascii;
 				_savegameName[length+1] = 0;
 				redrawTextfield();

Modified: scummvm/trunk/engines/kyra/gui_lok.h
===================================================================
--- scummvm/trunk/engines/kyra/gui_lok.h	2008-08-02 09:24:10 UTC (rev 33517)
+++ scummvm/trunk/engines/kyra/gui_lok.h	2008-08-02 11:40:09 UTC (rev 33518)
@@ -162,7 +162,7 @@
 	bool _menuRestoreScreen;
 	uint8 _toplevelMenu;
 	int _savegameOffset;
-	char _savegameName[31];
+	char _savegameName[40];
 	const char *_specialSavegameString;
 	Common::KeyState _keyPressed;
 	int8 _mouseWheel;

Modified: scummvm/trunk/engines/kyra/gui_v2.h
===================================================================
--- scummvm/trunk/engines/kyra/gui_v2.h	2008-08-02 09:24:10 UTC (rev 33517)
+++ scummvm/trunk/engines/kyra/gui_v2.h	2008-08-02 11:40:09 UTC (rev 33518)
@@ -188,7 +188,7 @@
 	// save menu
 	bool _noSaveProcess;
 	int _saveSlot;
-	char _saveDescription[0x50];
+	char _saveDescription[0x51];
 
 	int saveMenu(Button *caller);
 	int clickSaveSlot(Button *caller);

Modified: scummvm/trunk/engines/kyra/saveload.cpp
===================================================================
--- scummvm/trunk/engines/kyra/saveload.cpp	2008-08-02 09:24:10 UTC (rev 33517)
+++ scummvm/trunk/engines/kyra/saveload.cpp	2008-08-02 11:40:09 UTC (rev 33518)
@@ -95,6 +95,9 @@
 	if (header.version <= 8) {
 		char buffer[31];
 		in->read(buffer, 31);
+		// WORKAROUND: Old savegames could contain a missing termination 0 at the
+		// end so we manually add it.
+		buffer[30] = 0;
 		header.description = buffer;
 	} else {
 		header.description = "";


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