Module: wine Branch: master Commit: 00e1e5ddd5a97fd15b2c94c14ff7bc6e6ce49ba7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=00e1e5ddd5a97fd15b2c94c14f...
Author: Vincent Povirk vincent@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;