Alexandre Julliard : winspool.drv: Don' t crash if the ppd directory cannot be created.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Dec 17 16:32:34 CST 2014
Module: wine
Branch: master
Commit: f1aea67d9578a1fcbc5f7ca13fb5424b7b36be43
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f1aea67d9578a1fcbc5f7ca13fb5424b7b36be43
Author: Alexandre Julliard <julliard at 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 ))
{
More information about the wine-cvs
mailing list