[Scummvm-cvs-logs] SF.net SVN: scummvm:[55566] scummvm/trunk/engines/drascula/drascula.cpp

tdhs at users.sourceforge.net tdhs at users.sourceforge.net
Thu Jan 27 15:07:45 CET 2011


Revision: 55566
          http://scummvm.svn.sourceforge.net/scummvm/?rev=55566&view=rev
Author:   tdhs
Date:     2011-01-27 14:07:45 +0000 (Thu, 27 Jan 2011)

Log Message:
-----------
DRASCULA: Fix Memory Leak in drascula.dat Loading.

Modified Paths:
--------------
    scummvm/trunk/engines/drascula/drascula.cpp

Modified: scummvm/trunk/engines/drascula/drascula.cpp
===================================================================
--- scummvm/trunk/engines/drascula/drascula.cpp	2011-01-27 13:27:58 UTC (rev 55565)
+++ scummvm/trunk/engines/drascula/drascula.cpp	2011-01-27 14:07:45 UTC (rev 55566)
@@ -1041,25 +1041,22 @@
 
 	for (int lang = 0; lang < _numLangs; lang++) {
 		entryLen = in.readUint16BE();
-		pos = (char *)malloc(entryLen);
 		if (lang == _lang) {
-			res[0] = pos;
-			in.read(res[0], entryLen);
-		} else {
+			pos = (char *)malloc(entryLen);
 			in.read(pos, entryLen);
-		}
+			res[0] = pos;
+			pos += DATAALIGNMENT;
 
-		pos += DATAALIGNMENT;
+			for (int i = 1; i < numTexts; i++) {
+				pos -= 2;
 
-		for (int i = 1; i < numTexts; i++) {
-			pos -= 2;
+				len = READ_BE_UINT16(pos);
+				pos += 2 + len;
 
-			len = READ_BE_UINT16(pos);
-			pos += 2 + len;
-
-			if (lang == _lang)
 				res[i] = pos;
-		}
+			}
+		} else
+			in.seek(entryLen, SEEK_CUR);
 	}
 
 	return res;


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