--- sourceforge.net/trunk/rdesktop/printer.c 2004/01/29 11:41:35 587 +++ sourceforge.net/trunk/rdesktop/printer.c 2004/03/04 08:08:13 623 @@ -16,7 +16,7 @@ } int -printer_enum_devices(int *id, char *optarg) +printer_enum_devices(uint32 * id, char *optarg) { PRINTER *pprinter_data; @@ -44,7 +44,7 @@ pprinter_data = (PRINTER *) xmalloc(sizeof(PRINTER)); strcpy(g_rdpdr_device[*id].name, "PRN"); - strcat(g_rdpdr_device[*id].name, ltoa(already + count + 1, 10)); + strcat(g_rdpdr_device[*id].name, l_to_a(already + count + 1, 10)); /* first printer is set as default printer */ if ((already + count) == 0) @@ -109,14 +109,14 @@ static NTSTATUS printer_close(HANDLE handle) { - PRINTER *pprinter_data; - - pprinter_data = get_printer_data(handle); - - g_rdpdr_device[get_device_index(handle)].handle = 0; - - pclose(pprinter_data->printer_fp); - + int i = get_device_index(handle); + if (i >= 0) + { + PRINTER *pprinter_data = g_rdpdr_device[i].pdevice_data; + if (pprinter_data) + pclose(pprinter_data->printer_fp); + g_rdpdr_device[i].handle = 0; + } return STATUS_SUCCESS; }