[PATCH 1/2] winspool: Return a failure code in ClosePrinter

Detlef Riekenberg wine.dev at web.de
Tue Nov 1 17:21:41 CDT 2016


--
bye bye ... Detlef

Signed-off-by: Detlef Riekenberg <wine.dev at web.de>
---
 dlls/winspool.drv/info.c | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 2f0ff3d..2b2e0fc 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -3315,7 +3315,6 @@ BOOL WINAPI ClosePrinter(HANDLE hPrinter)
 {
     UINT_PTR i = (UINT_PTR)hPrinter;
     opened_printer_t *printer = NULL;
-    BOOL ret = FALSE;
 
     TRACE("(%p)\n", hPrinter);
 
@@ -3331,10 +3330,6 @@ BOOL WINAPI ClosePrinter(HANDLE hPrinter)
 
         TRACE("closing %s (doc: %p)\n", debugstr_w(printer->name), printer->doc);
 
-        if (printer->backend_printer) {
-            backend->fpClosePrinter(printer->backend_printer);
-        }
-
         if(printer->doc)
             EndDocPrinter(hPrinter);
 
@@ -3348,12 +3343,19 @@ BOOL WINAPI ClosePrinter(HANDLE hPrinter)
             HeapFree(GetProcessHeap(), 0, printer->queue);
         }
 
+        if (printer->backend_printer) {
+            backend->fpClosePrinter(printer->backend_printer);
+        }
+
         free_printer_entry( printer );
         printer_handles[i - 1] = NULL;
-        ret = TRUE;
+        LeaveCriticalSection(&printer_handles_cs);
+        return TRUE;
     }
+
     LeaveCriticalSection(&printer_handles_cs);
-    return ret;
+    SetLastError(ERROR_INVALID_HANDLE);
+    return FALSE;
 }
 
 /*****************************************************************************
-- 
2.7.4




More information about the wine-patches mailing list