winspool: Add a helper to free a printer entry.

This commit is contained in:
Huw Davies 2012-03-30 14:39:41 +01:00 committed by Alexandre Julliard
parent 2f78666a01
commit 736fdbdec5
1 changed files with 10 additions and 7 deletions

View File

@ -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;
}