We still need to cast the resulting pointer in NEW and NEW2 as it
authormillert <millert@openbsd.org>
Wed, 8 Jan 2014 23:12:57 +0000 (23:12 +0000)
committermillert <millert@openbsd.org>
Wed, 8 Jan 2014 23:12:57 +0000 (23:12 +0000)
is used in pointer arithmetic.  Otherwise we do arithmetic on void
* and corrupt the heap.

usr.bin/yacc/defs.h

index 1aa9f3d..1817db7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: defs.h,v 1.14 2014/01/08 22:30:32 millert Exp $       */
+/*     $OpenBSD: defs.h,v 1.15 2014/01/08 23:12:57 millert Exp $       */
 /*     $NetBSD: defs.h,v 1.6 1996/03/19 03:21:30 jtc Exp $     */
 
 /*
 
 /*  storage allocation macros  */
 
-#define        NEW(t)          (allocate(sizeof(t)))
-#define        NEW2(n,t)       (allocate((n)*sizeof(t)))
+#define        NEW(t)          ((t*)allocate(sizeof(t)))
+#define        NEW2(n,t)       ((t*)allocate((n)*sizeof(t)))
 
 
 /*  the structure of a symbol table entry  */