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