portability

diff --git a/skeletons/OBJECT_IDENTIFIER.c b/skeletons/OBJECT_IDENTIFIER.c
index 0f71307..216aed8 100644
--- a/skeletons/OBJECT_IDENTIFIER.c
+++ b/skeletons/OBJECT_IDENTIFIER.c
@@ -509,9 +509,13 @@
 	 * These require special treatment.
 	 */
 	{
-		uint8_t first_value[1 + arc_type_size];	/* of two arcs */
-		uint8_t *fv = first_value;
 		uint8_t *tp;
+#ifdef	__GNUC__
+		uint8_t first_value[1 + arc_type_size];	/* of two arcs */
+#else
+		uint8_t *first_value = alloca(1 + arc_type_size);
+#endif
+		uint8_t *fv = first_value;
 
 		/*
 		 * Simulate first_value = arc0 * 40 + arc1;