Module: wine Branch: master Commit: d6d0239f733639873bd136e7283f3bab3368fcb3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=d6d0239f733639873bd136e728...
Author: Detlef Riekenberg wine.dev@web.de Date: Mon Nov 5 22:48:07 2007 +0100
winspool: Error check in add_printer_driver() was to strict.
Reported by Dan Sawyer.
---
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..c4381d4 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -486,18 +486,21 @@ static BOOL add_printer_driver(const char *name) 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; }