diff options
| author | Julien | 2011-06-05 04:10:39 +0800 | 
|---|---|---|
| committer | Julien | 2011-06-23 15:11:36 +0800 | 
| commit | 7a882600c6778ad7d0bdd357aba92261ae306550 (patch) | |
| tree | 0314b22057e3de6fdce7d77df568d3a261d20726 | |
| parent | 3ece07b14b0ffcac4050692715c182d637c041a2 (diff) | |
| download | scummvm-rg350-7a882600c6778ad7d0bdd357aba92261ae306550.tar.gz scummvm-rg350-7a882600c6778ad7d0bdd357aba92261ae306550.tar.bz2 scummvm-rg350-7a882600c6778ad7d0bdd357aba92261ae306550.zip | |
GRAPHICS: Allocate Common::PEResources on the heap in WinFont::loadFromPE()
| -rw-r--r-- | graphics/fonts/winfont.cpp | 14 | 
1 files changed, 10 insertions, 4 deletions
| diff --git a/graphics/fonts/winfont.cpp b/graphics/fonts/winfont.cpp index 8b60f8aa6b..3bad92236d 100644 --- a/graphics/fonts/winfont.cpp +++ b/graphics/fonts/winfont.cpp @@ -120,15 +120,18 @@ bool WinFont::loadFromNE(const Common::String &fileName, const WinFontDirEntry &  }  bool WinFont::loadFromPE(const Common::String &fileName, const WinFontDirEntry &dirEntry) { -	Common::PEResources exe; +	Common::PEResources *exe = new Common::PEResources(); -	if (!exe.loadFromEXE(fileName)) +	if (!exe->loadFromEXE(fileName)) { +		delete exe;  		return false; +	}  	// Let's pull out the font directory -	Common::SeekableReadStream *fontDirectory = exe.getResource(Common::kPEFontDir, Common::String("FONTDIR")); +	Common::SeekableReadStream *fontDirectory = exe->getResource(Common::kPEFontDir, Common::String("FONTDIR"));  	if (!fontDirectory) {  		warning("No font directory in '%s'", fileName.c_str()); +		delete exe;  		return false;  	} @@ -139,18 +142,21 @@ bool WinFont::loadFromPE(const Common::String &fileName, const WinFontDirEntry &  	// Couldn't match the face name  	if (fontId == 0xffffffff) {  		warning("Could not find face '%s' in '%s'", dirEntry.faceName.c_str(), fileName.c_str()); +		delete exe;  		return false;  	}  	// Actually go get our font now... -	Common::SeekableReadStream *fontStream = exe.getResource(Common::kPEFont, fontId); +	Common::SeekableReadStream *fontStream = exe->getResource(Common::kPEFont, fontId);  	if (!fontStream) {  		warning("Could not find font %d in %s", fontId, fileName.c_str()); +		delete exe;  		return false;  	}  	bool ok = loadFromFNT(*fontStream);  	delete fontStream; +	delete exe;  	return ok;  } | 
