Huw Davies : winspool: Add a helper to free a printer entry.

Alexandre Julliard julliard at winehq.org
Fri Mar 30 11:27:06 CDT 2012


Module: wine
Branch: master
Commit: 736fdbdec5fa17f117082b3d4e8d44179f2b2d19
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=736fdbdec5fa17f117082b3d4e8d44179f2b2d19

Author: Huw Davies <huw at codeweavers.com>
Date:   Fri Mar 30 14:39:41 2012 +0100

winspool: Add a helper to free a printer entry.

---

 dlls/winspool.drv/info.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 7fbede2..24e5a97 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -773,6 +773,14 @@ static LPCWSTR get_basename_from_name(LPCWSTR name)
     return name;
 }
 
+static void free_printer_entry( opened_printer_t *printer )
+{
+    /* the queue is shared, so don't free that here */
+    HeapFree( GetProcessHeap(), 0, printer->printername );
+    HeapFree( GetProcessHeap(), 0, printer->name );
+    HeapFree( GetProcessHeap(), 0, printer );
+}
+
 /******************************************************************
  *  get_opened_printer_entry
  *  Get the first place empty in the opened printer table
@@ -883,11 +891,8 @@ static HANDLE get_opened_printer_entry(LPWSTR name, LPPRINTER_DEFAULTSW pDefault
 end:
     LeaveCriticalSection(&printer_handles_cs);
     if (!handle && printer) {
-        /* Something failed: Free all resources */
-        HeapFree(GetProcessHeap(), 0, printer->printername);
-        HeapFree(GetProcessHeap(), 0, printer->name);
         if (!queue) HeapFree(GetProcessHeap(), 0, printer->queue);
-        HeapFree(GetProcessHeap(), 0, printer);
+        free_printer_entry( printer );
     }
 
     return (HANDLE)handle;
@@ -2722,9 +2727,7 @@ BOOL WINAPI ClosePrinter(HANDLE hPrinter)
             HeapFree(GetProcessHeap(), 0, printer->queue);
         }
 
-        HeapFree(GetProcessHeap(), 0, printer->printername);
-        HeapFree(GetProcessHeap(), 0, printer->name);
-        HeapFree(GetProcessHeap(), 0, printer);
+        free_printer_entry( printer );
         printer_handles[i - 1] = NULL;
         ret = TRUE;
     }




More information about the wine-cvs mailing list