diff --git a/nettle-internal.h b/nettle-internal.h
index a814ed70ab84ab30ea98d4a19bf7dd43cf9f95fb..e0048b63c82b3ed72440626e7a17a7abdbe89656 100644
--- a/nettle-internal.h
+++ b/nettle-internal.h
@@ -35,13 +35,13 @@
  * fix maximum size, and abort if we ever need anything larger. */
 
 #if HAVE_ALLOCA
-# define TMP_DECL(name, type, max) \
-type *name
-# define TMP_ALLOC(name, size) \
-(name = alloca(sizeof (*name) * size))
+# if HAVE_ALLOCA_H
+#  include <alloca.h>
+# endif
+# define TMP_DECL(name, type, max) type *name
+# define TMP_ALLOC(name, size) (name = alloca(sizeof (*name) * size))
 #else /* !HAVE_ALLOCA */
-# define TMP_DECL(name, type, max) \
-type name[max]
+# define TMP_DECL(name, type, max) type name[max]
 # define TMP_ALLOC(name, size) \
 do { if (size > (sizeof(name) / sizeof(name[0]))) abort(); } while (0)
 #endif