From f718a433a189ebd8e66499718b7f6ad7b8316015 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Sat, 30 Oct 2010 13:28:15 -0500 Subject: [PATCH 4/6] gdiplus: Don't rely on an HDC in GdipMeasureCharacterRanges. --- dlls/gdiplus/graphics.c | 11 +++++++++-- 1 files changed, 9 insertions(+), 2 deletions(-) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 8e203f3..da2d966 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -3834,6 +3834,7 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics, int i; HFONT oldfont; struct measure_ranges_args args; + HDC temp_hdc=NULL; TRACE("(%p %s %d %p %s %p %d %p)\n", graphics, debugstr_w(string), length, font, debugstr_rectf(layoutRect), stringFormat, regionCount, regions); @@ -3846,8 +3847,8 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics, if(!graphics->hdc) { - FIXME("graphics object has no HDC\n"); - return NotImplemented; + temp_hdc = graphics->hdc = CreateCompatibleDC(0); + if (!temp_hdc) return OutOfMemory; } if (stringFormat->attr) @@ -3869,6 +3870,12 @@ GpStatus WINGDIPAPI GdipMeasureCharacterRanges(GpGraphics* graphics, DeleteObject(SelectObject(graphics->hdc, oldfont)); + if (temp_hdc) + { + graphics->hdc = NULL; + DeleteDC(temp_hdc); + } + return stat; } -- 1.7.1