cleanup and return in error case, otherwise a stale style pointer could be added to the family. CID 1246

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27524 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Stefano Ceccherini 2008-09-15 12:26:43 +00:00
parent 437ecc65ae
commit a57b0996eb

View File

@ -541,7 +541,7 @@ FontManager::_AddFont(font_directory& directory, BEntry& entry)
if (error != 0)
return B_ERROR;
FontFamily *family = _FindFamily(face->family_name);
FontFamily *family = _FindFamily(face->family_name);
if (family != NULL && family->HasStyle(face->style_name)) {
// prevent adding the same style twice
// (this indicates a problem with the installed fonts maybe?)
@ -562,9 +562,12 @@ FontManager::_AddFont(font_directory& directory, BEntry& entry)
FTRACE(("\tadd style: %s, %s\n", face->family_name, face->style_name));
// the FontStyle takes over ownership of the FT_Face object
FontStyle *style = new FontStyle(nodeRef, path.Path(), face);
if (!family->AddStyle(style))
FontStyle *style = new FontStyle(nodeRef, path.Path(), face);
if (!family->AddStyle(style)) {
delete style;
delete family;
return B_NO_MEMORY;
}
directory.styles.AddItem(style);
fStyleHashTable.AddItem(style);