Index: lisp.h =================================================================== RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lisp.h,v retrieving revision 1.140 diff -u -u -r1.140 lisp.h --- lisp.h 26 Mar 2006 14:33:39 -0000 1.140 +++ lisp.h 27 Mar 2006 22:04:21 -0000 @@ -1610,20 +1610,19 @@ } while (0) #ifdef NEW_GC -#define Dynarr_add(d, el) \ -do { \ - if (Dynarr_verify_mod (d)->cur >= (d)->max) \ - Dynarr_resize ((d), (d)->cur+1); \ - ((d)->base)[(d)->cur] = (el); \ - \ - if ((d)->lisp_imp) \ - set_lheader_implementation \ - ((struct lrecord_header *)&(((d)->base)[(d)->cur]), \ - (d)->lisp_imp); \ - \ - (d)->cur++; \ - if ((d)->cur > (d)->largest) \ - (d)->largest = (d)->cur; \ +#define Dynarr_add(d, el) \ +do { \ + const struct lrecord_implementation *imp = (d)->lisp_imp; \ + if (Dynarr_verify_mod (d)->cur >= (d)->max) \ + Dynarr_resize ((d), (d)->cur+1); \ + ((d)->base)[(d)->cur] = (el); \ + \ + if (imp) \ + set_lheader_implementation ((struct lrecord_header *)&(((d)->base)[(d)->cur]), imp); \ + \ + (d)->cur++; \ + if ((d)->cur > (d)->largest) \ + (d)->largest = (d)->cur; \ } while (0) #else /* not NEW_GC */ #define Dynarr_add(d, el) ( \