Improve Font cleanup

This commit is contained in:
Joshua Granick
2015-03-24 09:13:43 -07:00
parent 48ec618204
commit ad46acefbf
2 changed files with 17 additions and 12 deletions

View File

@@ -246,7 +246,9 @@ namespace lime {
if (stream) { if (stream) {
return SDL_RWclose ((SDL_RWops*)stream->handle); int code = SDL_RWclose ((SDL_RWops*)stream->handle);
delete stream;
return code;
} }
@@ -254,7 +256,15 @@ namespace lime {
#else #else
return ::fclose ((FILE*)stream->handle); if (stream) {
int code = ::fclose ((FILE*)stream->handle);
delete stream;
return code;
}
return 0;
#endif #endif

View File

@@ -359,6 +359,8 @@ namespace lime {
Font::Font (Resource *resource, int faceIndex) { Font::Font (Resource *resource, int faceIndex) {
this->face = 0;
if (resource) { if (resource) {
int error; int error;
@@ -389,6 +391,7 @@ namespace lime {
unsigned char *buffer = (unsigned char*)malloc (data.Size ()); unsigned char *buffer = (unsigned char*)malloc (data.Size ());
memcpy (buffer, data.Bytes (), data.Size ()); memcpy (buffer, data.Bytes (), data.Size ());
lime::fclose (file); lime::fclose (file);
file = 0;
error = FT_New_Memory_Face (library, buffer, data.Size (), faceIndex, &face); error = FT_New_Memory_Face (library, buffer, data.Size (), faceIndex, &face);
} }
@@ -397,7 +400,6 @@ namespace lime {
unsigned char *buffer = (unsigned char*)malloc (resource->data->Size ()); unsigned char *buffer = (unsigned char*)malloc (resource->data->Size ());
memcpy (buffer, resource->data->Bytes (), resource->data->Size ()); memcpy (buffer, resource->data->Bytes (), resource->data->Size ());
lime::fclose (file);
error = FT_New_Memory_Face (library, buffer, resource->data->Size (), faceIndex, &face); error = FT_New_Memory_Face (library, buffer, resource->data->Size (), faceIndex, &face);
} }
@@ -405,18 +407,11 @@ namespace lime {
if (file) { if (file) {
lime::fclose (file); lime::fclose (file);
file = 0;
} }
if (error) { if (!error) {
if (file) {
lime::fclose (file);
}
} else {
this->face = face; this->face = face;