Fix several memory leaks in the tests
diff --git a/tests/tests-c-compiler/check-src/check-03.-fwide-types.c b/tests/tests-c-compiler/check-src/check-03.-fwide-types.c
index 2c44d62..5a58d79 100644
--- a/tests/tests-c-compiler/check-src/check-03.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-03.-fwide-types.c
@@ -45,6 +45,8 @@
 	sprintf(buf2, "<Enum2>%s</Enum2>", xer_string);
 	printf("%d -> %s == %s\n", eval, buf, buf2);
 	assert(0 == strcmp(buf, buf2));
+
+	ASN_STRUCT_FREE(asn_DEF_Enum2, e);
 }
 
 int
diff --git a/tests/tests-c-compiler/check-src/check-119.-fwide-types.-gen-PER.c b/tests/tests-c-compiler/check-src/check-119.-fwide-types.-gen-PER.c
index 31270c3..655dd75 100644
--- a/tests/tests-c-compiler/check-src/check-119.-fwide-types.-gen-PER.c
+++ b/tests/tests-c-compiler/check-src/check-119.-fwide-types.-gen-PER.c
@@ -249,6 +249,7 @@
 
 	/* Save and re-load as PER */
 	save_object_as(st, expectation, AS_PER);
+	ASN_STRUCT_FREE(asn_DEF_PDU, st);
 	if(expectation == EXP_PER_NOCOMP)
 		return;	/* Already checked */
 	st = load_object_from("buffer", expectation, buf, buf_offset, AS_PER);
diff --git a/tests/tests-c-compiler/check-src/check-119.-gen-PER.c b/tests/tests-c-compiler/check-src/check-119.-gen-PER.c
index 3023303..0743302 100644
--- a/tests/tests-c-compiler/check-src/check-119.-gen-PER.c
+++ b/tests/tests-c-compiler/check-src/check-119.-gen-PER.c
@@ -251,6 +251,8 @@
 
 	/* Save and re-load as PER */
 	save_object_as(st, expectation, AS_PER);
+	ASN_STRUCT_FREE(asn_DEF_PDU, st);
+
 	if(expectation == EXP_PER_NOCOMP)
 		return;	/* Already checked */
 	st = load_object_from("buffer", expectation, buf, buf_offset, AS_PER);
diff --git a/tests/tests-c-compiler/check-src/check-126.-gen-PER.c b/tests/tests-c-compiler/check-src/check-126.-gen-PER.c
index 947640b..ed8cd25 100644
--- a/tests/tests-c-compiler/check-src/check-126.-gen-PER.c
+++ b/tests/tests-c-compiler/check-src/check-126.-gen-PER.c
@@ -150,6 +150,7 @@
 						rval.consumed /= 8;
 						if(mustfail) {
 							fprintf(stderr, "-> (this was expected failure)\n");
+							ASN_STRUCT_FREE(asn_DEF_PDU, st);
 							return 0;
 						}
 					} else {
@@ -167,6 +168,7 @@
 					if((mustfail?1:0) == (rval.code == RC_FAIL)) {
 						if(mustfail) {
 							fprintf(stderr, "-> (this was expected failure)\n");
+							ASN_STRUCT_FREE(asn_DEF_PDU, st);
 							return 0;
 						}
 					} else {
@@ -246,6 +248,7 @@
 	FILE *f;
 	char lastChar;
 	int mustfail, compare;
+	PDU_t *st;
 
 	sprintf(outName, SRCDIR_S "/data-126/%s", fname);
 	strcpy(outName + strlen(outName) - 3, ".out");
@@ -268,7 +271,8 @@
 		fclose(f);
 
 		fprintf(stderr, "Trying to decode [%s]\n", outName);
-		load_object_from(outName, fbuf, rd, AS_PER, mustfail);
+		st = load_object_from(outName, fbuf, rd, AS_PER, mustfail);
+		ASN_STRUCT_FREE(asn_DEF_PDU, st);
 		if(mustfail) return;
 
 		if(compare) {
@@ -291,6 +295,7 @@
 
 	/* Save and re-load as PER */
 	save_object_as(st, AS_PER);
+	ASN_STRUCT_FREE(asn_DEF_PDU, st);
 	compare_with_data_out(fname, buf, buf_offset);
 	st = load_object_from("buffer", buf, buf_offset, AS_PER, 0);
 	assert(st);
diff --git a/tests/tests-c-compiler/check-src/check-127.-gen-PER.c b/tests/tests-c-compiler/check-src/check-127.-gen-PER.c
index 34b6d74..0ead123 100644
--- a/tests/tests-c-compiler/check-src/check-127.-gen-PER.c
+++ b/tests/tests-c-compiler/check-src/check-127.-gen-PER.c
@@ -42,6 +42,8 @@
 
 	xer_fprint(stderr, &asn_DEF_T, ti);
 	xer_fprint(stderr, &asn_DEF_T, to);
+
+	ASN_STRUCT_FREE(asn_DEF_T, to);
 }
 
 int main() {
diff --git a/tests/tests-c-compiler/check-src/check-131.-gen-PER.c b/tests/tests-c-compiler/check-src/check-131.-gen-PER.c
index ed29315..0b8fcd6 100644
--- a/tests/tests-c-compiler/check-src/check-131.-gen-PER.c
+++ b/tests/tests-c-compiler/check-src/check-131.-gen-PER.c
@@ -55,5 +55,6 @@
 		|| (pd.nboff == 16 && pd.buffer == &po.tmpspace[0]));
 	assert(pd.nboff + pd.nbits == 16);
 
+	ASN_STRUCT_FREE(asn_DEF_T, t2);
 	return 0;
 }
diff --git a/tests/tests-c-compiler/check-src/check-132.-gen-PER.c b/tests/tests-c-compiler/check-src/check-132.-gen-PER.c
index 592425c..c8a2fb6 100644
--- a/tests/tests-c-compiler/check-src/check-132.-gen-PER.c
+++ b/tests/tests-c-compiler/check-src/check-132.-gen-PER.c
@@ -36,6 +36,8 @@
 
 	xer_fprint(stderr, &asn_DEF_T, ti);
 	xer_fprint(stderr, &asn_DEF_T, to);
+
+	ASN_STRUCT_FREE(asn_DEF_T, to);
 }
 
 int main() {
diff --git a/tests/tests-c-compiler/check-src/check-135.-gen-OER.c b/tests/tests-c-compiler/check-src/check-135.-gen-OER.c
index 384639f..6673a49 100644
--- a/tests/tests-c-compiler/check-src/check-135.-gen-OER.c
+++ b/tests/tests-c-compiler/check-src/check-135.-gen-OER.c
@@ -36,6 +36,8 @@
         return 1;
     }
 
+    ASN_STRUCT_RESET(asn_DEF_T, &source);
+    ASN_STRUCT_FREE(asn_DEF_T, decoded);
     return 0;
 }
 
diff --git a/tests/tests-c-compiler/check-src/check-148.c b/tests/tests-c-compiler/check-src/check-148.c
index f19a110..94afdcd 100644
--- a/tests/tests-c-compiler/check-src/check-148.c
+++ b/tests/tests-c-compiler/check-src/check-148.c
@@ -139,6 +139,8 @@
   buf2_pos = 0;
   erval = der_encode(&asn_DEF_DefaultSequence, tp, buf2_fill, 0);
   compare_encoding(&erval, expected, expected_size, buf2);
+
+  ASN_STRUCT_RESET(asn_DEF_DefaultSequence, tp);
 }
 
 static void
@@ -160,6 +162,7 @@
   buf2_pos = 0;
   erval = der_encode(&asn_DEF_DefaultSet, tp, buf2_fill, 0);
   compare_encoding(&erval, expected, expected_size, buf2);
+  ASN_STRUCT_RESET(asn_DEF_DefaultSet, tp);
 }
 
 int
diff --git a/tests/tests-c-compiler/check-src/check-22.-fwide-types.c b/tests/tests-c-compiler/check-src/check-22.-fwide-types.c
index 2b3a542..8fe42a4 100644
--- a/tests/tests-c-compiler/check-src/check-22.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-22.-fwide-types.c
@@ -79,6 +79,7 @@
 			);
 		}
 		assert(rval.consumed <= (size_t)consumed);
+		ASN_STRUCT_RESET(asn_DEF_T1, tp);
 		return;
 	}
 
@@ -113,6 +114,8 @@
 	ret = xer_fprint(stderr, &asn_DEF_T1, tp);
 	assert(ret == 0);
 	fprintf(stderr, "=== EOF ===\n");
+
+	ASN_STRUCT_RESET(asn_DEF_T1, tp);
 }
 
 static void
diff --git a/tests/tests-c-compiler/check-src/check-24.-fwide-types.c b/tests/tests-c-compiler/check-src/check-24.-fwide-types.c
index aad7fb8..a885d6c 100644
--- a/tests/tests-c-compiler/check-src/check-24.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-24.-fwide-types.c
@@ -58,6 +58,8 @@
 		}
 		assert(rval.consumed <= consumed);
 	}
+
+	ASN_STRUCT_RESET(asn_DEF_T, tp);
 }
 
 static void
diff --git a/tests/tests-c-compiler/check-src/check-30.-fwide-types.c b/tests/tests-c-compiler/check-src/check-30.-fwide-types.c
index 1843080..3f1b1cd 100644
--- a/tests/tests-c-compiler/check-src/check-30.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-30.-fwide-types.c
@@ -177,6 +177,7 @@
 		}
 		assert(rval.consumed <= consumed);
 	}
+	ASN_STRUCT_RESET(asn_DEF_T, tp);
 }
 
 
@@ -212,6 +213,8 @@
 	printf("[%s] vs [%s]\n", xer_buf, xer_sample);
 	assert(xer_off == xer_sample_len);
 	assert(memcmp(xer_buf, xer_sample, xer_off) == 0);
+
+	ASN_STRUCT_FREE(asn_DEF_T, tp);
 }
 
 static void
diff --git a/tests/tests-c-compiler/check-src/check-31.-fwide-types.c b/tests/tests-c-compiler/check-src/check-31.-fwide-types.c
index a6bd772..399f0da 100644
--- a/tests/tests-c-compiler/check-src/check-31.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-31.-fwide-types.c
@@ -124,6 +124,7 @@
 			);
 		}
 		assert(rval.consumed <= consumed);
+		ASN_STRUCT_RESET(asn_DEF_Forest, &t);
 		return;
 	}
 
@@ -173,6 +174,8 @@
 	printf("[%s] vs [%s]\n", xer_buf, xer_sample);
 	assert(xer_off == xer_sample_len);
 	assert(memcmp(xer_buf, xer_sample, xer_off) == 0);
+
+	ASN_STRUCT_FREE(asn_DEF_Forest, tp);
 }
 
 
diff --git a/tests/tests-c-compiler/check-src/check-32.c b/tests/tests-c-compiler/check-src/check-32.c
index d869a90..3f8bf06 100644
--- a/tests/tests-c-compiler/check-src/check-32.c
+++ b/tests/tests-c-compiler/check-src/check-32.c
@@ -57,6 +57,7 @@
 	assert(swo->seqOfOpt != 0);
 
 	xer_fprint(stderr, &asn_DEF_SeqWithOptional, swo);
+	void *tmp = swo->seqOfOpt;
 	swo->seqOfOpt = 0;
 
 	erv = der_encode_to_buffer(&asn_DEF_SeqWithOptional,
@@ -64,10 +65,15 @@
 	assert(erv.encoded > 0);
 	buf[erv.encoded] = '\0';
 
+	swo->seqOfOpt = tmp;
+	ASN_STRUCT_RESET(asn_DEF_SeqWithMandatory, &swm);
+	ASN_STRUCT_FREE(asn_DEF_SeqWithOptional, swo);
 	swo = 0;
+
 	drv = ber_decode(0, &asn_DEF_SeqWithMandatory, (void **)&swo,
 			buf, erv.encoded);
 	assert(drv.code != RC_OK);
+	ASN_STRUCT_FREE(asn_DEF_SeqWithOptional, swo);
 	swo = 0;
 	drv = ber_decode(0, &asn_DEF_SeqWithOptional, (void **)&swo,
 			buf, erv.encoded);
@@ -76,6 +82,7 @@
 	assert(swo->seqOfOpt == 0);
 
 	xer_fprint(stderr, &asn_DEF_SeqWithOptional, swo);
+	ASN_STRUCT_FREE(asn_DEF_SeqWithOptional, swo);
 
 	printf("Finished\n");
 
diff --git a/tests/tests-c-compiler/check-src/check-35.c b/tests/tests-c-compiler/check-src/check-35.c
index f4e797c..6f1fcc8 100644
--- a/tests/tests-c-compiler/check-src/check-35.c
+++ b/tests/tests-c-compiler/check-src/check-35.c
@@ -304,6 +304,8 @@
 	assert(er.encoded == (ssize_t)xer_off);
 	assert(xer_off == xer_sample_len);
 	assert(memcmp(xer_buf, xer_sample, xer_off) == 0);
+
+	ASN_STRUCT_FREE(asn_DEF_T, tp);
 }
 
 
diff --git a/tests/tests-c-compiler/check-src/check-46.c b/tests/tests-c-compiler/check-src/check-46.c
index 6e50f64..21ae690 100644
--- a/tests/tests-c-compiler/check-src/check-46.c
+++ b/tests/tests-c-compiler/check-src/check-46.c
@@ -31,6 +31,7 @@
 
 	assert(rval.code == RC_OK);
 	assert(rval.consumed == consumed);
+	ASN_STRUCT_RESET(asn_DEF_T, tp);
 }
 
 int
diff --git a/tests/tests-c-compiler/check-src/check-48.c b/tests/tests-c-compiler/check-src/check-48.c
index f8a7918..a41981e 100644
--- a/tests/tests-c-compiler/check-src/check-48.c
+++ b/tests/tests-c-compiler/check-src/check-48.c
@@ -94,5 +94,7 @@
 
 	printf("OK\n");
 
+	ASN_STRUCT_RESET(asn_DEF_UserIdentifier, &user);
+	ASN_STRUCT_RESET(asn_DEF_UserIdentifier, &user_new);
 	return ret;
 }
diff --git a/tests/tests-c-compiler/check-src/check-60.c b/tests/tests-c-compiler/check-src/check-60.c
index f871dbb..23bdac1 100644
--- a/tests/tests-c-compiler/check-src/check-60.c
+++ b/tests/tests-c-compiler/check-src/check-60.c
@@ -109,7 +109,7 @@
 	 * Test the T1 with primitive encoding.
 	 */
 	memset(&t1, 0, sizeof(t1));
-	memset(&t1_new, 0, sizeof(t1_new));
+	ASN_STRUCT_RESET(asn_DEF_T1, &t1_new);
 
 	t1.i = -112233;
 	t1.any.buf = test_any_buf2;
@@ -123,6 +123,7 @@
 	assert(t1_new.i == -112233);
 	assert(t1_new.any.size == (ssize_t)sizeof(test_any_buf2));
 	assert(memcmp(t1_new.any.buf, test_any_buf2, sizeof(test_any_buf2)) == 0);
+	ASN_STRUCT_RESET(asn_DEF_T1, &t1_new);
 
 	/*
 	 * Test the T2 empty sequence.
@@ -146,8 +147,8 @@
 	/*
 	 * Test the T2 sequence.
 	 */
-	memset(&t2, 0, sizeof(t2));
-	memset(&t2_new, 0, sizeof(t2_new));
+	ASN_STRUCT_RESET(asn_DEF_T2, &t2);
+	ASN_STRUCT_RESET(asn_DEF_T2, &t2_new);
 
 	t2.i = 332211;
 	t2.any = calloc(1, sizeof(*t2.any));
@@ -166,8 +167,10 @@
 	/*
 	 * Test the T2 sequence with primitive encoding.
 	 */
-	memset(&t2, 0, sizeof(t2));
-	memset(&t2_new, 0, sizeof(t2_new));
+	t2.any->buf = NULL;
+	t2.any->size = 0;
+	ASN_STRUCT_RESET(asn_DEF_T2, &t2);
+	ASN_STRUCT_RESET(asn_DEF_T2, &t2_new);
 
 	t2.i = 0;
 	t2.any = calloc(1, sizeof(*t2.any));
@@ -188,7 +191,7 @@
 	 */
 	free(t2.any);
 	t2.any = 0;
-	memset(&t2_new, 0, sizeof(t2_new));
+	ASN_STRUCT_RESET(asn_DEF_T2, &t2_new);
 
 	save_object(&t2, td2);
 	ret = load_object(&t2_new, td2);
diff --git a/tests/tests-c-compiler/check-src/check-65.c b/tests/tests-c-compiler/check-src/check-65.c
index 061a3aa..c292063 100644
--- a/tests/tests-c-compiler/check-src/check-65.c
+++ b/tests/tests-c-compiler/check-src/check-65.c
@@ -95,6 +95,7 @@
 		}
 		assert(rval.consumed <= consumed);
 	}
+	ASN_STRUCT_RESET(*td, tp);
 }
 
 int
diff --git a/tests/tests-c-compiler/check-src/check-70.-fwide-types.c b/tests/tests-c-compiler/check-src/check-70.-fwide-types.c
index 8152346..7891069 100644
--- a/tests/tests-c-compiler/check-src/check-70.-fwide-types.c
+++ b/tests/tests-c-compiler/check-src/check-70.-fwide-types.c
@@ -190,6 +190,7 @@
 
 	/* Save and re-load as DER */
 	save_object_as(st, ATS_DER);
+	ASN_STRUCT_FREE(asn_DEF_PDU, st);
 	st = load_object_from(expectation, buf, buf_offset, ATS_BER);
 	assert(st);
 
diff --git a/tests/tests-c-compiler/check-src/check-70.c b/tests/tests-c-compiler/check-src/check-70.c
index 8e27799..821b3d6 100644
--- a/tests/tests-c-compiler/check-src/check-70.c
+++ b/tests/tests-c-compiler/check-src/check-70.c
@@ -184,6 +184,7 @@
 
 	/* Save and re-load as DER */
 	save_object_as(st, ATS_DER);
+	ASN_STRUCT_FREE(asn_DEF_PDU, st);
 	st = load_object_from(expectation, buf, buf_offset, ATS_BER);
 	assert(st);
 
diff --git a/tests/tests-c-compiler/check-src/check64-134.-gen-PER.c b/tests/tests-c-compiler/check-src/check64-134.-gen-PER.c
index 1eaef4e..61d5fd7 100644
--- a/tests/tests-c-compiler/check-src/check64-134.-gen-PER.c
+++ b/tests/tests-c-compiler/check-src/check64-134.-gen-PER.c
@@ -70,6 +70,7 @@
 
 	xer_fprint(stderr, &asn_DEF_T, ti);
 	xer_fprint(stderr, &asn_DEF_T, to);
+	ASN_STRUCT_FREE(asn_DEF_T, to);
 }
 
 static void
@@ -95,36 +96,42 @@
     l2i(&ti.signed33,    0);
     l2i(&ti.signed33ext, 0);
 	verify(1, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  1);
     ul2i(&ti.unsigned42,  1);
     l2i(&ti.signed33,    1);
     l2i(&ti.signed33ext, 1);
 	verify(2, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  5000000000);
     ul2i(&ti.unsigned42,  3153600000000);
     l2i(&ti.signed33,    4000000000);
     l2i(&ti.signed33ext, 4000000000);
 	verify(3, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33, -1);
     ul2i(&ti.unsigned42,  0);
     l2i(&ti.signed33,    0);
     l2i(&ti.signed33ext, 0);
 	NO_encode(4, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  0);
     ul2i(&ti.unsigned42, -1);
     l2i(&ti.signed33,    0);
     l2i(&ti.signed33ext, 0);
 	NO_encode(5, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  0);
     ul2i(&ti.unsigned42,  0);
     l2i(&ti.signed33,    -4000000000-1);
     l2i(&ti.signed33ext, 0);
 	NO_encode(6, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  0);
     ul2i(&ti.unsigned42,  0);
@@ -132,30 +139,35 @@
     l2i(&ti.signed33ext, -4000000000-1);
     assert(ti.signed33ext.size == 5);
 	verify(7, &ti); /* signed33ext is extensible */
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  5000000000 + 1);
     ul2i(&ti.unsigned42,  0);
     l2i(&ti.signed33,    0);
     l2i(&ti.signed33ext, 0);
 	NO_encode(8, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  0);
     ul2i(&ti.unsigned42,  3153600000000 + 1);
     l2i(&ti.signed33,    0);
     l2i(&ti.signed33ext, 0);
 	NO_encode(9, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  5000000000 - 1);
     ul2i(&ti.unsigned42,  3153600000000 - 1);
     l2i(&ti.signed33,    4000000000 - 1);
     l2i(&ti.signed33ext, 4000000000 - 1);
 	verify(10, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
     ul2i(&ti.unsigned33,  0);
     ul2i(&ti.unsigned42,  0);
     l2i(&ti.signed33,    0);
     l2i(&ti.signed33ext, 4000000000 + 1);
 	verify(11, &ti);
+	ASN_STRUCT_RESET(asn_DEF_T, &ti);
 
 	return 0;
 }
diff --git a/tests/tests-c-compiler/check-src/check64-136.-gen-OER.c b/tests/tests-c-compiler/check-src/check64-136.-gen-OER.c
index 5658738..6b17a7b 100644
--- a/tests/tests-c-compiler/check-src/check64-136.-gen-OER.c
+++ b/tests/tests-c-compiler/check-src/check64-136.-gen-OER.c
@@ -38,7 +38,8 @@
     if(XEQ_SUCCESS != xer_equivalent(&asn_DEF_T, &source, decoded, stderr)) {
         return 1;
     }
-
+    ASN_STRUCT_RESET(asn_DEF_T, &source);
+    ASN_STRUCT_FREE(asn_DEF_T, decoded);
     return 0;
 }