Vincent Povirk : gdiplus: Don' t rely on an HDC in GdipMeasureCharacterRanges.
Module: wine Branch: master Commit: 867f3d39e7859104bc415234a86fae773a51809f URL: http://source.winehq.org/git/wine.git/?a=commit;h=867f3d39e7859104bc415234a8... Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Sat Oct 30 13:28:15 2010 -0500 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; }
participants (1)
-
Alexandre Julliard