Module: wine Branch: master Commit: bc7df7ad80af9822a7d22d77289d9a13a63bc588 URL: http://source.winehq.org/git/wine.git/?a=commit;h=bc7df7ad80af9822a7d22d7728...
Author: Eric Pouech eric.pouech@wanadoo.fr Date: Sun Oct 22 21:48:19 2006 +0200
gdi32: Better error handling in enhanced metafile.
---
dlls/gdi32/enhmfdrv/graphics.c | 16 +++++++++------- 1 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/dlls/gdi32/enhmfdrv/graphics.c b/dlls/gdi32/enhmfdrv/graphics.c index 13b4a06..cf4603b 100644 --- a/dlls/gdi32/enhmfdrv/graphics.c +++ b/dlls/gdi32/enhmfdrv/graphics.c @@ -756,18 +756,19 @@ BOOL EMFDRV_ExtTextOut( PHYSDEV dev, INT for (i = 0; i < count; i++) { textWidth += lpDx[i]; } - GetTextExtentPoint32W(physDev->hdc, str, count, &strSize); - textHeight = strSize.cy; + if (GetTextExtentPoint32W(physDev->hdc, str, count, &strSize)) + textHeight = strSize.cy; } else { UINT i; INT *dx = (INT *)((char*)pemr + pemr->emrtext.offDx); SIZE charSize; for (i = 0; i < count; i++) { - GetTextExtentPoint32W(physDev->hdc, str + i, 1, &charSize); - dx[i] = charSize.cx; - textWidth += charSize.cx; - textHeight = max(textHeight, charSize.cy); + if (GetTextExtentPoint32W(physDev->hdc, str + i, 1, &charSize)) { + dx[i] = charSize.cx; + textWidth += charSize.cx; + textHeight = max(textHeight, charSize.cy); + } } }
@@ -791,7 +792,8 @@ BOOL EMFDRV_ExtTextOut( PHYSDEV dev, INT switch (textAlign & (TA_TOP | TA_BOTTOM | TA_BASELINE)) { case TA_BASELINE: { TEXTMETRICW tm; - GetTextMetricsW(physDev->hdc, &tm); + if (!GetTextMetricsW(physDev->hdc, &tm)) + tm.tmDescent = 0; /* Play safe here... it's better to have a bounding box */ /* that is too big than too small. */ pemr->rclBounds.top = y - textHeight - 1;