From ad46acefbf33a4a56cde68698002c02d1f8f222d Mon Sep 17 00:00:00 2001 From: Joshua Granick Date: Tue, 24 Mar 2015 09:13:43 -0700 Subject: [PATCH] Improve Font cleanup --- project/src/backend/sdl/SDLSystem.cpp | 14 ++++++++++++-- project/src/text/Font.cpp | 15 +++++---------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/project/src/backend/sdl/SDLSystem.cpp b/project/src/backend/sdl/SDLSystem.cpp index 6302d4b98..e4a8eed26 100644 --- a/project/src/backend/sdl/SDLSystem.cpp +++ b/project/src/backend/sdl/SDLSystem.cpp @@ -246,7 +246,9 @@ namespace lime { 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 - return ::fclose ((FILE*)stream->handle); + if (stream) { + + int code = ::fclose ((FILE*)stream->handle); + delete stream; + return code; + + } + + return 0; #endif diff --git a/project/src/text/Font.cpp b/project/src/text/Font.cpp index 99b3f1f47..20056b9ad 100644 --- a/project/src/text/Font.cpp +++ b/project/src/text/Font.cpp @@ -359,6 +359,8 @@ namespace lime { Font::Font (Resource *resource, int faceIndex) { + this->face = 0; + if (resource) { int error; @@ -389,6 +391,7 @@ namespace lime { unsigned char *buffer = (unsigned char*)malloc (data.Size ()); memcpy (buffer, data.Bytes (), data.Size ()); lime::fclose (file); + file = 0; 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 ()); memcpy (buffer, resource->data->Bytes (), resource->data->Size ()); - lime::fclose (file); error = FT_New_Memory_Face (library, buffer, resource->data->Size (), faceIndex, &face); } @@ -405,18 +407,11 @@ namespace lime { if (file) { lime::fclose (file); + file = 0; } - if (error) { - - if (file) { - - lime::fclose (file); - - } - - } else { + if (!error) { this->face = face;