Improve Font cleanup
This commit is contained in:
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user