[PATCH] set last error on enumerating displaysettings
Marcus Meissner
marcus at jet.franken.de
Sun Dec 30 12:31:51 CST 2007
The MSDN manpage reports that lasterror is set
when errors occur, so I guess the value to
be ERROR_NO_MORE_FILES like used in other places.
Ciao, Marcus
---
dlls/user32/tests/sysparams.c | 11 +++++++++++
dlls/winex11.drv/settings.c | 1 +
2 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/dlls/user32/tests/sysparams.c b/dlls/user32/tests/sysparams.c
index 8ce4b93..5547f52 100644
--- a/dlls/user32/tests/sysparams.c
+++ b/dlls/user32/tests/sysparams.c
@@ -2532,6 +2532,7 @@ static void test_EnumDisplaySettings(void)
DEVMODE devmode;
DWORD val;
HDC hdc;
+ DWORD num;
memset(&devmode, 0, sizeof(devmode));
devmode.dmSize = sizeof(devmode);
@@ -2550,6 +2551,16 @@ static void test_EnumDisplaySettings(void)
}
ReleaseDC(0, hdc);
+
+ num = 1;
+ while (1) {
+ SetLastError (0xdeadbeef);
+ if (!EnumDisplaySettings(NULL, num++, &devmode)) {
+ DWORD le = GetLastError();
+ ok (le == ERROR_NO_MORE_FILES, "Last error on EnumDisplaySettings was %d, expected ERROR_NO_MORE_FILES\n", le);
+ break;
+ }
+ }
}
START_TEST(sysparams)
diff --git a/dlls/winex11.drv/settings.c b/dlls/winex11.drv/settings.c
index 373562b..d68b674 100644
--- a/dlls/winex11.drv/settings.c
+++ b/dlls/winex11.drv/settings.c
@@ -316,6 +316,7 @@ BOOL X11DRV_EnumDisplaySettingsEx( LPCWSTR name, DWORD n, LPDEVMODEW devmode, DW
return TRUE;
}
TRACE("mode %d -- not present (%s)\n", n, handler_name);
+ SetLastError(ERROR_NO_MORE_FILES);
return FALSE;
}
--
1.5.2.4
More information about the wine-patches
mailing list