Module: wine Branch: master Commit: f1aea67d9578a1fcbc5f7ca13fb5424b7b36be43 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f1aea67d9578a1fcbc5f7ca13f...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Dec 17 17:10:50 2014 +0100
winspool.drv: Don't crash if the ppd directory cannot be created.
---
dlls/winspool.drv/info.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c index 073a8fb..7653d2f 100644 --- a/dlls/winspool.drv/info.c +++ b/dlls/winspool.drv/info.c @@ -946,7 +946,11 @@ static BOOL CUPS_LoadPrinters(void) } else { BOOL added_driver = FALSE;
- if (!ppd_dir) ppd_dir = get_ppd_dir(); + if (!ppd_dir && !(ppd_dir = get_ppd_dir())) + { + HeapFree( GetProcessHeap(), 0, port ); + break; + } ppd = get_ppd_filename( ppd_dir, nameW ); if (get_cups_ppd( dests[i].name, ppd )) { @@ -1098,7 +1102,11 @@ static BOOL update_driver( HANDLE printer ) queue_name = get_queue_name( printer, &is_cups ); if (!queue_name) return FALSE;
- ppd_dir = get_ppd_dir(); + if (!(ppd_dir = get_ppd_dir())) + { + HeapFree( GetProcessHeap(), 0, queue_name ); + return FALSE; + } ppd = get_ppd_filename( ppd_dir, name );
#ifdef SONAME_LIBCUPS @@ -1224,7 +1232,7 @@ static BOOL PRINTCAP_ParseEntry( const char *pent, BOOL isfirst ) sep_file[] = "<sep file?>"; BOOL added_driver = FALSE;
- if (!ppd_dir) ppd_dir = get_ppd_dir(); + if (!ppd_dir && !(ppd_dir = get_ppd_dir())) goto end; ppd = get_ppd_filename( ppd_dir, devnameW ); if (get_fallback_ppd( devname, ppd )) {