]> granicus.if.org Git - python/commitdiff
Fix reference and memory leaks in _freeze_importlib
authorChristian Heimes <christian@cheimes.de>
Sun, 21 Jul 2013 14:19:02 +0000 (16:19 +0200)
committerChristian Heimes <christian@cheimes.de>
Sun, 21 Jul 2013 14:19:02 +0000 (16:19 +0200)
Modules/_freeze_importlib.c

index 65b29e1f8c2a952d0429377d466553644c3ed8fa..b773c32537bd4b04b7f968902312f9c7b9e1d3d1 100644 (file)
@@ -72,6 +72,7 @@ main(int argc, char *argv[])
     if (n < text_size) {
         fprintf(stderr, "read too short: got %ld instead of %ld bytes\n",
                 (long) n, (long) text_size);
+        free(text);
         return 1;
     }
     text[text_size] = '\0';
@@ -86,6 +87,7 @@ main(int argc, char *argv[])
 
     code = Py_CompileStringExFlags(text, "<frozen importlib._bootstrap>",
                                    Py_file_input, NULL, 0);
+    free(text);
     if (code == NULL)
         goto error;
     marshalled = PyMarshal_WriteObjectToString(code, Py_MARSHAL_VERSION);
@@ -102,6 +104,7 @@ main(int argc, char *argv[])
     outfile = fopen(outpath, "w");
     if (outfile == NULL) {
         fprintf(stderr, "cannot open '%s' for writing\n", outpath);
+        Py_DECREF(marshalled);
         return 1;
     }
     fprintf(outfile, "%s\n", header);