winspool.drv: Do not try to check the registry if opening the printer fails (valgrind)

Bruno Jesus 00cpxxx at gmail.com
Thu May 29 20:04:56 CDT 2014


If opening the printer fails we will not have the key required for the
registry function.

For bug https://bugs.winehq.org/show_bug.cgi?id=36604
-------------- next part --------------
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index e33b257..bfb22cb 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -2530,6 +2530,7 @@ BOOL WINAPI OpenPrinterA(LPSTR lpPrinterName,HANDLE *phPrinter,
  */
 BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter, LPPRINTER_DEFAULTSW pDefault)
 {
+    HKEY key;
 
     TRACE("(%s, %p, %p)\n", debugstr_w(lpPrinterName), phPrinter, pDefault);
 
@@ -2542,12 +2543,10 @@ BOOL WINAPI OpenPrinterW(LPWSTR lpPrinterName,HANDLE *phPrinter, LPPRINTER_DEFAU
     /* Get the unique handle of the printer or Printserver */
     *phPrinter = get_opened_printer_entry(lpPrinterName, pDefault);
 
-    if (*phPrinter)
+    if (*phPrinter && WINSPOOL_GetOpenedPrinterRegKey( *phPrinter, &key ) == ERROR_SUCCESS)
     {
-        HKEY key;
         DWORD deleting = 0, size = sizeof( deleting ), type;
         DWORD status;
-        WINSPOOL_GetOpenedPrinterRegKey( *phPrinter, &key );
         RegQueryValueExW( key, May_Delete_Value, NULL, &type, (LPBYTE)&deleting, &size );
         WaitForSingleObject( init_mutex, INFINITE );
         status = get_dword_from_reg( key, StatusW );


More information about the wine-patches mailing list