Module: wine Branch: master Commit: 205f952db1cf2f508cb5defc4d365dec410c6a8c URL: https://gitlab.winehq.org/wine/wine/-/commit/205f952db1cf2f508cb5defc4d365de...
Author: Akihiro Sagawa sagawa.aki@gmail.com Date: Sun Oct 30 16:21:50 2022 +0900
shell32: Returns a number of copied characters in DropQueryFileW.
---
dlls/shell32/shellole.c | 3 ++- dlls/shell32/tests/shellole.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/dlls/shell32/shellole.c b/dlls/shell32/shellole.c index 4f9d0db7ff6..45ff2a5410c 100644 --- a/dlls/shell32/shellole.c +++ b/dlls/shell32/shellole.c @@ -652,8 +652,9 @@ UINT WINAPI DragQueryFileW( }
i = lstrlenW(filename); - if ( !lpszwFile) goto end; /* needed buffer size */ + if (!lpszwFile || !lLength) goto end; /* needed buffer size */ lstrcpynW(lpszwFile, filename, lLength); + i = min(i, lLength - 1); end: GlobalUnlock(hDrop); free(buffer); diff --git a/dlls/shell32/tests/shellole.c b/dlls/shell32/tests/shellole.c index ca156ebda62..6d9d348dc6e 100644 --- a/dlls/shell32/tests/shellole.c +++ b/dlls/shell32/tests/shellole.c @@ -819,7 +819,7 @@ static LRESULT WINAPI drop_window_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARA
memset(filenameW, 0xaa, sizeof(filenameW)); num = DragQueryFileW(hDrop, 0, filenameW, 2); - todo_wine ok(num == 1, "expected 1, got %u\n", num); + ok(num == 1, "expected 1, got %u\n", num); ok(filenameW[0] == expected_filenameW[0], "expected '%lc', got '%lc'\n", expected_filenameW[0], filenameW[0]); ok(filenameW[1] == L'\0', "expected nul, got %#x\n", (WCHAR)filenameW[1]);