[PATCH] winspool: Check in add_printer_driver was to strict

Detlef Riekenberg wine.dev at web.de
Mon Nov 5 15:48:07 CST 2007


---
 dlls/winspool.drv/info.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index e560f6a..cfc8c29 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -486,18 +486,21 @@ static BOOL add_printer_driver(const cha
     di3a.pConfigFile      = driver_nt;
     di3a.pDefaultDataType = default_data_type;
 
-    if (AddPrinterDriverA(NULL, 3, (LPBYTE)&di3a))
+    if (AddPrinterDriverA(NULL, 3, (LPBYTE)&di3a) ||
+        (GetLastError() ==  ERROR_PRINTER_DRIVER_ALREADY_INSTALLED ))
     {
         di3a.cVersion     = 0;
         di3a.pEnvironment = env_9x;
         di3a.pDriverPath  = driver_9x;
         di3a.pConfigFile  = driver_9x;
-        if (AddPrinterDriverA(NULL, 3, (LPBYTE)&di3a))
+        if (AddPrinterDriverA(NULL, 3, (LPBYTE)&di3a) ||
+            (GetLastError() ==  ERROR_PRINTER_DRIVER_ALREADY_INSTALLED ))
         {
             return TRUE;
         }
     }
-    ERR("Failed adding driver %s: %u\n", debugstr_a(di3a.pDriverPath), GetLastError());
+    ERR("Failed adding driver %s (%s): %u\n", debugstr_a(di3a.pDriverPath), 
+        debugstr_a(di3a.pEnvironment), GetLastError());
     return FALSE;
 }
 
-- 
1.4.1


--=-jYl4TLMn+ShxXPzNbj9F--




More information about the wine-patches mailing list