Vincent Povirk : gdiplus: Fix memory leak in GdipSetStringFormatMeasurableCharacterRanges.

Alexandre Julliard julliard at winehq.org
Mon Dec 28 09:16:03 CST 2009


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

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Thu Dec 24 15:14:45 2009 -0500

gdiplus: Fix memory leak in GdipSetStringFormatMeasurableCharacterRanges.

---

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

diff --git a/dlls/gdiplus/stringformat.c b/dlls/gdiplus/stringformat.c
index 392f11f..cf6ea1f 100644
--- a/dlls/gdiplus/stringformat.c
+++ b/dlls/gdiplus/stringformat.c
@@ -252,15 +252,19 @@ GpStatus WINGDIPAPI GdipSetStringFormatLineAlign(GpStringFormat *format,
 GpStatus WINGDIPAPI GdipSetStringFormatMeasurableCharacterRanges(
     GpStringFormat *format, INT rangeCount, GDIPCONST CharacterRange *ranges)
 {
+    CharacterRange *new_ranges;
+
     if (!(format && ranges))
         return InvalidParameter;
 
     TRACE("%p, %d, %p\n", format, rangeCount, ranges);
 
-    format->character_ranges = GdipAlloc(rangeCount * sizeof(CharacterRange));
-    if (!format->character_ranges)
+    new_ranges = GdipAlloc(rangeCount * sizeof(CharacterRange));
+    if (!new_ranges)
         return OutOfMemory;
 
+    GdipFree(format->character_ranges);
+    format->character_ranges = new_ranges;
     memcpy(format->character_ranges, ranges, sizeof(CharacterRange) * rangeCount);
     format->range_count = rangeCount;
 




More information about the wine-cvs mailing list