Nikolay Sivov : dwrite: Fix off by one error in glyph count adjustment.

Alexandre Julliard julliard at winehq.org
Thu Mar 30 15:18:02 CDT 2017


Module: wine
Branch: master
Commit: 3d7fabf62788f6ea41e48d3daad05aa776d8bc1f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3d7fabf62788f6ea41e48d3daad05aa776d8bc1f

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Thu Mar 30 15:07:02 2017 +0300

dwrite: Fix off by one error in glyph count adjustment.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/dwrite/layout.c       | 5 ++---
 dlls/dwrite/tests/layout.c | 4 ++--
 2 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/dlls/dwrite/layout.c b/dlls/dwrite/layout.c
index a7fff46..590b2c5 100644
--- a/dlls/dwrite/layout.c
+++ b/dlls/dwrite/layout.c
@@ -1269,10 +1269,9 @@ static HRESULT layout_add_effective_run(struct dwrite_textlayout *layout, const
     run->line = line;
 
     if (r->u.regular.run.glyphCount) {
-        /* trim from the left */
+        /* Trim leading and trailing clusters. */
         run->glyphcount = r->u.regular.run.glyphCount - r->u.regular.clustermap[start];
-        /* trim from the right */
-        if (start + length < r->u.regular.descr.stringLength - 1)
+        if (start + length < r->u.regular.descr.stringLength)
             run->glyphcount -= r->u.regular.run.glyphCount - r->u.regular.clustermap[start + length];
     }
     else
diff --git a/dlls/dwrite/tests/layout.c b/dlls/dwrite/tests/layout.c
index c097e20..daffd81 100644
--- a/dlls/dwrite/tests/layout.c
+++ b/dlls/dwrite/tests/layout.c
@@ -1626,7 +1626,7 @@ static void test_Draw(void)
     flush_sequence(sequences, RENDERER_ID);
     hr = IDWriteTextLayout_Draw(layout, &ctxt, &testrenderer, 0.0, 0.0);
     ok(hr == S_OK, "got 0x%08x\n", hr);
-    ok_sequence(sequences, RENDERER_ID, draw_seq, "draw test", TRUE);
+    ok_sequence(sequences, RENDERER_ID, draw_seq, "draw test", FALSE);
     IDWriteTextLayout_Release(layout);
 
     /* with reduced width DrawGlyphRun() is called for every line */
@@ -4987,7 +4987,7 @@ todo_wine
     flush_sequence(sequences, RENDERER_ID);
     hr = IDWriteTextLayout_Draw(layout, NULL, &testrenderer, 0.0f, 0.0f);
     ok(hr == S_OK, "got 0x%08x\n", hr);
-    ok_sequence(sequences, RENDERER_ID, drawunderline4_seq, "draw underline test 4", TRUE);
+    ok_sequence(sequences, RENDERER_ID, drawunderline4_seq, "draw underline test 4", FALSE);
 
     IDWriteTextLayout_Release(layout);
 




More information about the wine-cvs mailing list