diff --git a/libasn1compiler/asn1c_save.c b/libasn1compiler/asn1c_save.c
index d88741ce49cbf80cf9c3e4daa7347996b11b19a3..3ce7d48aedf2a87b05e83edd09a6c68d15594686 100644
--- a/libasn1compiler/asn1c_save.c
+++ b/libasn1compiler/asn1c_save.c
@@ -199,7 +199,7 @@ asn1c_save_compiled_output(arg_t *arg, const char *datadir,
 	fclose(mkf);
 	safe_fprintf(stderr, "Generated Makefile.am.sample\n");
 
-        asn1c__cleanup_pdu_type();
+	asn1c__cleanup_pdu_type();
 
 	return 0;
 }
@@ -606,10 +606,13 @@ asn1c__add_pdu_type(const char *ctypename) {
 
 static void
 asn1c__cleanup_pdu_type() {
-	int i;
-	for (i = 0; i < pduTypes; i++)
-		free(pduType[i].typename);
-	free(pduType);
+    int i;
+    for(i = 0; i < pduTypes; i++) {
+        free(pduType[i].typename);
+    }
+    free(pduType);
+	pduType = NULL;
+    pduTypes = 0;
 }
 
 static int