GRAPHICS: Allocate Common::PEResources on the heap in WinFont::loadFromPE()
This commit is contained in:
parent
3ece07b14b
commit
7a882600c6
1 changed files with 10 additions and 4 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue