Module: wine Branch: master Commit: 736fdbdec5fa17f117082b3d4e8d44179f2b2d19 URL: http://source.winehq.org/git/wine.git/?a=commit;h=736fdbdec5fa17f117082b3d4e...
Author: Huw Davies huw@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; }