Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48111 Signed-off-by: Gijs Vermeulen gijsvrm@codeweavers.com --- dlls/odbccp32/odbccp32.c | 3 ++- dlls/odbccp32/tests/misc.c | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/dlls/odbccp32/odbccp32.c b/dlls/odbccp32/odbccp32.c index 1198b487f3..a09d6571f3 100644 --- a/dlls/odbccp32/odbccp32.c +++ b/dlls/odbccp32/odbccp32.c @@ -583,7 +583,8 @@ BOOL WINAPI SQLGetInstalledDrivers(char *buf, WORD size, WORD *sizeout) return FALSE; }
- *sizeout = WideCharToMultiByte(CP_ACP, 0, wbuf, written, NULL, 0, NULL, NULL); + if (sizeout) + *sizeout = WideCharToMultiByte(CP_ACP, 0, wbuf, written, NULL, 0, NULL, NULL); WideCharToMultiByte(CP_ACP, 0, wbuf, written, buf, size, NULL, NULL);
heap_free(wbuf); diff --git a/dlls/odbccp32/tests/misc.c b/dlls/odbccp32/tests/misc.c index dc2ca7ed3f..e2f48ee732 100644 --- a/dlls/odbccp32/tests/misc.c +++ b/dlls/odbccp32/tests/misc.c @@ -643,6 +643,11 @@ static void test_SQLGetInstalledDrivers(void) ok(!ret, "got %d\n", ret); check_error(ODBC_ERROR_INVALID_BUFF_LEN);
+ ret = SQLGetInstalledDrivers(buffer, 10, NULL); + ok(ret, "got %d\n", ret); + ok(strlen(buffer) == 8, "got len %u\n", lstrlenA(buffer)); + ok(!buffer[9], "buffer not doubly null-terminated\n"); + ret = SQLGetInstalledDrivers(buffer, 10, &written); ok(ret, "got %d\n", ret); ok(strlen(buffer) == 8, "got len %u\n", lstrlenA(buffer));