aboutsummaryrefslogtreecommitdiff
path: root/graphics/fonts/winfont.cpp
diff options
context:
space:
mode:
authorJulien2011-06-05 04:10:39 +0800
committerJulien2011-06-23 15:11:36 +0800
commit7a882600c6778ad7d0bdd357aba92261ae306550 (patch)
tree0314b22057e3de6fdce7d77df568d3a261d20726 /graphics/fonts/winfont.cpp
parent3ece07b14b0ffcac4050692715c182d637c041a2 (diff)
downloadscummvm-rg350-7a882600c6778ad7d0bdd357aba92261ae306550.tar.gz
scummvm-rg350-7a882600c6778ad7d0bdd357aba92261ae306550.tar.bz2
scummvm-rg350-7a882600c6778ad7d0bdd357aba92261ae306550.zip
GRAPHICS: Allocate Common::PEResources on the heap in WinFont::loadFromPE()
Diffstat (limited to 'graphics/fonts/winfont.cpp')
-rw-r--r--graphics/fonts/winfont.cpp14
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;
}