diff --git a/libbacktrace/zstdtest.c b/libbacktrace/zstdtest.c
index 1b4158a50ebb251a187494c7248dd86d44674618..1a27d90e29e03c50840dcf19af10325126b90318 100644
--- a/libbacktrace/zstdtest.c
+++ b/libbacktrace/zstdtest.c
@@ -197,7 +197,11 @@ test_samples (struct backtrace_state *state)
       unsigned char *uncompressed;
       size_t uncompressed_len;
 
-      uncompressed = (unsigned char *) malloc (tests[i].uncompressed_len);
+      uncompressed_len = tests[i].uncompressed_len;
+      if (uncompressed_len == 0)
+	uncompressed_len = strlen (tests[i].uncompressed);
+
+      uncompressed = (unsigned char *) malloc (uncompressed_len);
       if (uncompressed == NULL)
 	{
 	  perror ("malloc");
@@ -206,10 +210,6 @@ test_samples (struct backtrace_state *state)
 	  continue;
 	}
 
-      uncompressed_len = tests[i].uncompressed_len;
-      if (uncompressed_len == 0)
-	uncompressed_len = strlen (tests[i].uncompressed);
-
       if (!backtrace_uncompress_zstd (state,
 				      ((const unsigned char *)
 				       tests[i].compressed),