Joris Huizer : gdiplus: font: Ensure to release resources.

Alexandre Julliard julliard at winehq.org
Fri Jun 27 07:41:58 CDT 2008


Module: wine
Branch: master
Commit: 4cafd76f2ddba6830a8e155dce3a1157b57bc347
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=4cafd76f2ddba6830a8e155dce3a1157b57bc347

Author: Joris Huizer <jorishuizer at debian>
Date:   Thu Jun 26 22:13:29 2008 +0200

gdiplus: font: Ensure to release resources.

---

 dlls/gdiplus/font.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/dlls/gdiplus/font.c b/dlls/gdiplus/font.c
index 0bb9fc7..4b784f6 100644
--- a/dlls/gdiplus/font.c
+++ b/dlls/gdiplus/font.c
@@ -42,6 +42,7 @@ static inline REAL get_dpi (void)
     HDC hdc = GetDC(0);
     GdipCreateFromHDC (hdc, &graphics);
     GdipGetDpiX(graphics, &dpi);
+    GdipDeleteGraphics(graphics);
     ReleaseDC (0, hdc);
 
     return dpi;
@@ -351,7 +352,7 @@ GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR *name,
 {
     GpFontFamily* ffamily;
     HDC hdc;
-    HFONT hFont;
+    HFONT hFont, hfont_old;
     LOGFONTW lfw;
 
     TRACE("%s, %p %p\n", debugstr_w(name), fontCollection, FontFamily);
@@ -371,14 +372,17 @@ GpStatus WINGDIPAPI GdipCreateFontFamilyFromName(GDIPCONST WCHAR *name,
     hdc = GetDC(0);
     lstrcpynW(lfw.lfFaceName, name, sizeof(WCHAR) * LF_FACESIZE);
     hFont = CreateFontIndirectW (&lfw);
-    SelectObject(hdc, hFont);
+    hfont_old = SelectObject(hdc, hFont);
 
     GetTextMetricsW(hdc, ffamily->tmw);
+    DeleteObject(SelectObject(hdc, hfont_old));
 
     ffamily->FamilyName = GdipAlloc(LF_FACESIZE * sizeof (WCHAR));
     if (!ffamily->FamilyName)
     {
+        GdipFree(ffamily->tmw);
         GdipFree(ffamily);
+        ReleaseDC(0, hdc);
         return OutOfMemory;
     }
 




More information about the wine-cvs mailing list