From 96f628f48797c0602e1421a42283740cc6ebfd67 Mon Sep 17 00:00:00 2001
From: Christian Heimes <christian@cheimes.de>
Date: Sun, 21 Jul 2013 16:19:02 +0200
Subject: [PATCH] Fix reference and memory leaks in _freeze_importlib

---
 Modules/_freeze_importlib.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Modules/_freeze_importlib.c b/Modules/_freeze_importlib.c
index 65b29e1f8c2..b773c32537b 100644
--- a/Modules/_freeze_importlib.c
+++ b/Modules/_freeze_importlib.c
@@ -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);
-- 
2.30.9