Piotr Caban : winspool.drv: Ignore device name if printer handle is passed in DocumentProperties.

Alexandre Julliard julliard at winehq.org
Tue Aug 16 16:00:59 CDT 2022


Module: wine
Branch: master
Commit: 4723b6b8c5370782c5735cac98fedf5bc4b239cf
URL:    https://gitlab.winehq.org/wine/wine/-/commit/4723b6b8c5370782c5735cac98fedf5bc4b239cf

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Mon Aug 15 19:56:21 2022 +0200

winspool.drv: Ignore device name if printer handle is passed in DocumentProperties.

---

 dlls/winspool.drv/info.c       | 2 +-
 dlls/winspool.drv/tests/info.c | 4 ++++
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index e1cd0338207..d800eae159f 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -1889,7 +1889,7 @@ LONG WINAPI DocumentPropertiesW(HWND hWnd, HANDLE hPrinter,
     TRACE("(%p,%p,%s,%p,%p,%ld)\n",
           hWnd, hPrinter, debugstr_w(pDeviceName), pDevModeOutput, pDevModeInput, fMode);
 
-    device = pDeviceName && pDeviceName[0] ? pDeviceName : get_opened_printer_name(hPrinter);
+    device = hPrinter ? get_opened_printer_name(hPrinter) : pDeviceName;
     if (!device) {
         ERR("no device name\n");
         return -1;
diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c
index f7464d9d696..47f602b7de3 100644
--- a/dlls/winspool.drv/tests/info.c
+++ b/dlls/winspool.drv/tests/info.c
@@ -2679,6 +2679,7 @@ static void test_DocumentProperties(void)
     LONG dm_size, ret;
     DEVMODEA *dm;
     char empty_str[] = "";
+    char non_existing_str[] = "non existing printer";
 
     if (!default_printer)
     {
@@ -2707,6 +2708,9 @@ static void test_DocumentProperties(void)
     ret = DocumentPropertiesA(0, hprn, empty_str, dm, dm, DM_OUT_BUFFER);
     ok(ret == IDOK, "DocumentPropertiesA ret value %ld != expected IDOK\n", ret);
 
+    ret = DocumentPropertiesA(0, hprn, non_existing_str, dm, dm, DM_OUT_BUFFER);
+    ok(ret == IDOK, "DocumentPropertiesA ret value %ld != expected IDOK\n", ret);
+
     test_DEVMODEA(dm, dm_size, default_printer);
 
     HeapFree(GetProcessHeap(), 0, dm);




More information about the wine-cvs mailing list