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