diff --git a/src/pike_types.c b/src/pike_types.c
index 062c66f07268a993b79b27e6bf114f71628b45e5..0c19cb23b957b983d12f8c509cd3487270344fcc 100644
--- a/src/pike_types.c
+++ b/src/pike_types.c
@@ -8719,7 +8719,7 @@ void init_types(void)
   if( !type_stack )
     type_stack = xalloc(sizeof(struct pike_type *)*PIKE_TYPE_STACK_SIZE);
   if( !pike_type_mark_stack )
-    pike_type_mark_stack = xalloc(sizeof(struct pike_type *)*PIKE_TYPE_STACK_SIZE);
+    pike_type_mark_stack = xalloc(sizeof(struct pike_type *)*PIKE_TYPE_STACK_SIZE / 4);
 
   Pike_compiler->type_stackp = type_stack;
   Pike_compiler->pike_type_mark_stackp = pike_type_mark_stack;