Module: wine Branch: master Commit: 1a2d520ee13cc126e303d797d56076c00128e871 URL: http://source.winehq.org/git/wine.git/?a=commit;h=1a2d520ee13cc126e303d797d5...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Mon Jun 8 21:12:54 2015 +0300
dwrite: Exit earlier when setting property for zero length range.
---
dlls/dwrite/layout.c | 4 ++++ dlls/dwrite/tests/layout.c | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+)
diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c index 96d4959..903e53d 100644 --- a/dlls/dwrite/layout.c +++ b/dlls/dwrite/layout.c @@ -1431,6 +1431,10 @@ static HRESULT set_layout_range_attr(struct dwrite_textlayout *layout, enum layo struct list *ranges; DWRITE_TEXT_RANGE r;
+ /* ignore zero length ranges */ + if (value->range.length == 0) + return S_OK; + /* select from ranges lists */ switch (attr) { diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c index 4dd0ab1..dd574b2 100644 --- a/dlls/dwrite/tests/layout.c +++ b/dlls/dwrite/tests/layout.c @@ -1879,6 +1879,12 @@ static void test_SetFontSize(void) hr = IDWriteTextLayout_SetFontSize(layout, 15.0, r); ok(hr == S_OK, "got 0x%08x\n", hr);
+ /* zero length range */ + r.startPosition = 1; + r.length = 0; + hr = IDWriteTextLayout_SetFontSize(layout, 123.0, r); + ok(hr == S_OK, "got 0x%08x\n", hr); + size = 0.0; hr = IDWriteTextLayout_GetFontSize(layout, 1, &size, &r); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -1963,6 +1969,12 @@ static void test_SetFontFamilyName(void) hr = IDWriteTextLayout_SetFontFamilyName(layout, taHomaW, r); ok(hr == S_OK, "got 0x%08x\n", hr);
+ /* zero length range */ + r.startPosition = 1; + r.length = 0; + hr = IDWriteTextLayout_SetFontFamilyName(layout, arialW, r); + ok(hr == S_OK, "got 0x%08x\n", hr); + r.startPosition = 0; r.length = 0; nameW[0] = 0; @@ -2034,6 +2046,12 @@ static void test_SetFontStyle(void) hr = IDWriteTextLayout_SetFontStyle(layout, DWRITE_FONT_STYLE_ITALIC, r); ok(hr == S_OK, "got 0x%08x\n", hr);
+ /* zero length range */ + r.startPosition = 1; + r.length = 0; + hr = IDWriteTextLayout_SetFontStyle(layout, DWRITE_FONT_STYLE_NORMAL, r); + ok(hr == S_OK, "got 0x%08x\n", hr); + style = DWRITE_FONT_STYLE_NORMAL; hr = IDWriteTextLayout_GetFontStyle(layout, 1, &style, &r); ok(hr == S_OK, "got 0x%08x\n", hr); @@ -2116,6 +2134,12 @@ static void test_SetFontStretch(void) hr = IDWriteTextLayout_SetFontStretch(layout, DWRITE_FONT_STRETCH_CONDENSED, r); ok(hr == S_OK, "got 0x%08x\n", hr);
+ /* zero length range */ + r.startPosition = 1; + r.length = 0; + hr = IDWriteTextLayout_SetFontStretch(layout, DWRITE_FONT_STRETCH_NORMAL, r); + ok(hr == S_OK, "got 0x%08x\n", hr); + stretch = DWRITE_FONT_STRETCH_UNDEFINED; hr = IDWriteTextLayout_GetFontStretch(layout, 1, &stretch, &r); ok(hr == S_OK, "got 0x%08x\n", hr);