Avoid needless memory management error if EnumPrinters returns no
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 12 Mar 2002 09:55:02 +0000 (09:55 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 12 Mar 2002 09:55:02 +0000 (09:55 +0000)
printers.

git-svn-id: svn://svn.tartarus.org/sgt/putty@1588 cda61777-01e9-0310-a592-d414129be87e

printing.c

index 9ba2d5d..cd4baa9 100644 (file)
@@ -26,11 +26,16 @@ printer_enum *printer_start_enum(int *nprinters_ptr)
                     buffer, 512, &needed, &nprinters) == 0)
        goto error;
 
-    buffer = srealloc(buffer, needed);
-
-    if (EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 5,
-                    (LPBYTE)buffer, needed, &needed, &nprinters) == 0)
-       goto error;
+    if (needed) {
+        buffer = srealloc(buffer, needed);
+
+        if (EnumPrinters(PRINTER_ENUM_LOCAL, NULL, 5,
+                         (LPBYTE)buffer, needed, &needed, &nprinters) == 0)
+            goto error;
+    } else {
+        nprinters = 0;
+        ret->info = NULL;
+    }
 
     ret->info = (LPPRINTER_INFO_5)buffer;
     ret->nprinters = *nprinters_ptr = nprinters;