From 00e1e5ddd5a97fd15b2c94c14ff7bc6e6ce49ba7 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Thu, 24 Dec 2009 15:14:45 -0500 Subject: [PATCH] gdiplus: Fix memory leak in GdipSetStringFormatMeasurableCharacterRanges. --- dlls/gdiplus/stringformat.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/dlls/gdiplus/stringformat.c b/dlls/gdiplus/stringformat.c index 392f11f327a..cf6ea1f392a 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;