Module: wine Branch: master Commit: 82aa066fccc63c8edcb6d9832f4fb48eb0483f64 URL: https://source.winehq.org/git/wine.git/?a=commit;h=82aa066fccc63c8edcb6d9832...
Author: Francois Gouget fgouget@free.fr Date: Mon Jan 27 14:22:51 2020 +0100
advapi32/tests: Avoid failure when GetServiceKeyName() gets a smart quote.
For non-English languages the Spooler display name may contain non-ASCII characters, typically a smart quote. On Windows 7 GetServiceKeyName() fails when it gets such characters.
Signed-off-by: Francois Gouget fgouget@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/advapi32/tests/service.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
diff --git a/dlls/advapi32/tests/service.c b/dlls/advapi32/tests/service.c index 3872666085..484167656f 100644 --- a/dlls/advapi32/tests/service.c +++ b/dlls/advapi32/tests/service.c @@ -720,6 +720,17 @@ static void test_get_displayname(void) CloseServiceHandle(scm_handle); }
+static int is_printable_ascii_str(const char *s) +{ + while (*s) + { + if (*s < 32 || *s >= 127) + return 0; + s++; + } + return 1; +} + static void test_get_servicekeyname(void) { SC_HANDLE scm_handle, svc_handle; @@ -861,6 +872,14 @@ static void test_get_servicekeyname(void) servicesize = 0; ret = GetServiceKeyNameA(scm_handle, displayname, NULL, &servicesize); ok(!ret, "Expected failure\n"); + if (!is_printable_ascii_str(displayname) && + GetLastError() == ERROR_SERVICE_DOES_NOT_EXIST) + { + win_skip("GetServiceKeyName() does not support non-ASCII display names: %s\n", displayname); /* Windows 7 */ + CloseServiceHandle(scm_handle); + return; /* All the tests that follow will fail too */ + } + ok(GetLastError() == ERROR_INSUFFICIENT_BUFFER, "Expected ERROR_INSUFFICIENT_BUFFER, got %d\n", GetLastError());