get rid of alloca() in compiler
diff --git a/tests/tests-c-compiler/check-src/check-41.c b/tests/tests-c-compiler/check-src/check-41.c
index e076894..483229e 100644
--- a/tests/tests-c-compiler/check-src/check-41.c
+++ b/tests/tests-c-compiler/check-src/check-41.c
@@ -95,7 +95,8 @@
 	int i;
 
 	buf_size = cmp_buf_size + 100;
-	buf = alloca(buf_size);
+    uint8_t scratch[buf_size];
+	buf = scratch;
 	buf_pos = 0;
 
 	/*
@@ -118,16 +119,17 @@
 		}
 		assert(buf[i] == cmp_buf[i]);
 	}
+
+    buf = 0;
 }
 
 static void
 partial_read(uint8_t *buf_0, size_t size) {
 	T_t t, *tp;
 	asn_dec_rval_t rval;
-	size_t i1, i2;
-	uint8_t *buf_1 = alloca(size);
-	uint8_t *buf_2 = alloca(size);
-	uint8_t *buf_3 = alloca(size);
+	uint8_t buf_1[size];
+	uint8_t buf_2[size];
+	uint8_t buf_3[size];
 
 	fprintf(stderr, "\nPartial read sequence...\n");
 
@@ -137,8 +139,8 @@
 	 *   ^ buf_0                    ^ buf_0+size
 	 * Try to read block by block.
 	 */
-	for(i1 = 0; i1 < size; i1++) {
-		for(i2 = i1; i2 < size; i2++) {
+	for(size_t i1 = 0; i1 < size; i1++) {
+		for(size_t i2 = i1; i2 < size; i2++) {
 			uint8_t *chunk1 = buf_0;
 			size_t size1 = i1;
 			uint8_t *chunk2 = buf_0 + size1;