X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=windows%2Fwinprint.c;h=bc5a5d12bf8028138c272274e9183b5907c1ee56;hb=cc66c86e7311c97db09da989c340ba3108c9e14f;hp=b8696520090dae3902b32041b810f78e282f3b31;hpb=cb45b9cc253d6f661b2d90003b699c1558ca2bf4;p=PuTTY.git diff --git a/windows/winprint.c b/windows/winprint.c index b8696520..bc5a5d12 100644 --- a/windows/winprint.c +++ b/windows/winprint.c @@ -18,39 +18,39 @@ struct printer_job_tag { HANDLE hprinter; }; -static char *printer_add_enum(int param, DWORD level, char *buffer, - int offset, int *nprinters_ptr) +static int printer_add_enum(int param, DWORD level, char **buffer, + int offset, int *nprinters_ptr) { - DWORD needed, nprinters; + DWORD needed = 0, nprinters = 0; - buffer = sresize(buffer, offset+512, char); + *buffer = sresize(*buffer, offset+512, char); /* * Exploratory call to EnumPrinters to determine how much space * we'll need for the output. Discard the return value since it * will almost certainly be a failure due to lack of space. */ - EnumPrinters(param, NULL, level, buffer+offset, 512, + EnumPrinters(param, NULL, level, (*buffer)+offset, 512, &needed, &nprinters); if (needed < 512) needed = 512; - buffer = sresize(buffer, offset+needed, char); + *buffer = sresize(*buffer, offset+needed, char); - if (EnumPrinters(param, NULL, level, buffer+offset, + if (EnumPrinters(param, NULL, level, (*buffer)+offset, needed, &needed, &nprinters) == 0) - return NULL; + return FALSE; *nprinters_ptr += nprinters; - return buffer; + return TRUE; } printer_enum *printer_start_enum(int *nprinters_ptr) { printer_enum *ret = snew(printer_enum); - char *buffer = NULL, *retval; + char *buffer = NULL; *nprinters_ptr = 0; /* default return value */ buffer = snewn(512, char); @@ -71,12 +71,9 @@ printer_enum *printer_start_enum(int *nprinters_ptr) ret->enum_level = 4; } - retval = printer_add_enum(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, - ret->enum_level, buffer, 0, nprinters_ptr); - if (!retval) + if (!printer_add_enum(PRINTER_ENUM_LOCAL | PRINTER_ENUM_CONNECTIONS, + ret->enum_level, &buffer, 0, nprinters_ptr)) goto error; - else - buffer = retval; switch (ret->enum_level) { case 4: