From 265c8e7fb1dd5a923240ec39378591e7d3cd4202 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Thu, 24 Dec 2009 15:14:45 -0500 Subject: [PATCH 2/2] 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 6e85008..f7a88e7 100644 --- a/dlls/gdiplus/stringformat.c +++ b/dlls/gdiplus/stringformat.c @@ -250,15 +250,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; -- 1.6.3.3