Nikolay Sivov : dwrite: Exit earlier when setting property for zero length range.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Jun 9 08:25:53 CDT 2015
Module: wine
Branch: master
Commit: 1a2d520ee13cc126e303d797d56076c00128e871
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1a2d520ee13cc126e303d797d56076c00128e871
Author: Nikolay Sivov <nsivov at 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);
More information about the wine-cvs
mailing list