gdi32 : Corrects widenPath behaviour when working on an open path

Laurent Vromman laurent at vromman.org
Tue Apr 3 00:45:40 CDT 2007


Changelog.
Corrects the test in widenPath which checks wether the path is open or 
not and add a test to control it.

 dlls/gdi32/path.c       |    8 ++++----
 dlls/gdi32/tests/path.c |   15 ++++++++-------
 2 files changed, 12 insertions(+), 11 deletions(-)

-------------- next part --------------
diff --git a/dlls/gdi32/path.c b/dlls/gdi32/path.c
index c3b1f1c..22c153f 100644
--- a/dlls/gdi32/path.c
+++ b/dlls/gdi32/path.c
@@ -1778,13 +1778,13 @@ static BOOL PATH_WidenPath(DC *dc)
 
     pPath = &dc->path;
 
-    PATH_FlattenPath(pPath);
-
-    if(pPath->state != PATH_Closed) {
-       ERR("Path Closed\n");
+    if(pPath->state == PATH_Open) {
+       SetLastError(ERROR_CAN_NOT_COMPLETE);
        return FALSE;
     }
 
+    PATH_FlattenPath(pPath);
+
     size = GetObjectW( dc->hPen, 0, NULL );
     if (!size) return FALSE;
 
diff --git a/dlls/gdi32/tests/path.c b/dlls/gdi32/tests/path.c
index 074a151..e9a6d39 100644
--- a/dlls/gdi32/tests/path.c
+++ b/dlls/gdi32/tests/path.c
@@ -35,7 +35,8 @@ static void test_widenpath(void)
     HPEN greenPen, narrowPen;
     HPEN oldPen;
     POINT pnt[6];
-    INT nSize;
+    INT nSize, ret;
+    DWORD error;
 
     /* Create a pen to be used in WidenPath */
     greenPen = CreatePen(PS_SOLID, 10, RGB(0,0,0));
@@ -70,12 +71,12 @@ static void test_widenpath(void)
 
     AbortPath(hdc);
 
-    todo_wine {
-        /* Test WidenPath with an empty path */
-        SetLastError(0xdeadbeef);
-        BeginPath(hdc);
-        ok(WidenPath(hdc) == FALSE, "WidenPath fails while widening an empty path. Error : %d\n", GetLastError());
-    }
+    /* Test WidenPath with an open path */
+    SetLastError(0xdeadbeef);
+    BeginPath(hdc);
+    ret = WidenPath(hdc);
+    error = GetLastError();
+    ok(ret == FALSE && GetLastError() == ERROR_CAN_NOT_COMPLETE, "WidenPath fails while widening an open path. Return value is %d, should be %d. Error is %08x, should be %08x\n", ret, FALSE, GetLastError(), ERROR_CAN_NOT_COMPLETE);
 
     AbortPath(hdc);
 


More information about the wine-patches mailing list