[PATCH 2/5] user32: Use common cleanup code in DrawTextExW().
Zhiyi Zhang
zzhang at codeweavers.com
Thu May 3 22:12:06 CDT 2018
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
dlls/user32/text.c | 25 ++++++++++---------------
1 file changed, 10 insertions(+), 15 deletions(-)
diff --git a/dlls/user32/text.c b/dlls/user32/text.c
index e9c6c71068..3ba4a129cf 100644
--- a/dlls/user32/text.c
+++ b/dlls/user32/text.c
@@ -886,6 +886,7 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
int prefix_offset;
ellipsis_data ellip;
BOOL invert_y=FALSE;
+ int ret = 0;
TRACE("%s, %d, [%s] %08x\n", debugstr_wn (str, count), count,
wine_dbgstr_rect(rect), flags);
@@ -1002,11 +1003,7 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
const WCHAR *p;
p = str; while (p < str+len && *p != TAB) p++;
len_seg = p - str;
- if (len_seg != len && !GetTextExtentPointW(hdc, str, len_seg, &size))
- {
- heap_free(retstr);
- return 0;
- }
+ if (len_seg != len && !GetTextExtentPointW(hdc, str, len_seg, &size)) goto done;
}
else
len_seg = len;
@@ -1015,10 +1012,7 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
((flags & DT_NOCLIP) ? 0 : ETO_CLIPPED) |
((flags & DT_RTLREADING) ? ETO_RTLREADING : 0),
rect, str, len_seg, NULL ))
- {
- heap_free(retstr);
- return 0;
- }
+ goto done;
if (prefix_offset != -1 && prefix_offset < len_seg)
{
TEXT_DrawUnderscore (hdc, xseg, y + tm.tmAscent + 1, str, prefix_offset, (flags & DT_NOCLIP) ? NULL : rect);
@@ -1067,12 +1061,13 @@ INT WINAPI DrawTextExW( HDC hdc, LPWSTR str, INT i_count,
if (dtp)
rect->right += lmargin + rmargin;
}
- if (retstr)
- {
- memcpy (str, retstr, size_retstr);
- heap_free(retstr);
- }
- return y - rect->top;
+
+ if (retstr) memcpy(str, retstr, size_retstr);
+
+ ret = y - rect->top;
+done:
+ heap_free(retstr);
+ return ret;
}
/***********************************************************************
--
2.17.0
More information about the wine-devel
mailing list