--- gforth/Attic/forth.h 1996/05/23 15:13:08 1.22 +++ gforth/Attic/forth.h 1996/07/25 09:25:15 1.24 @@ -132,8 +132,9 @@ typedef Label *Xt; /* CODE_ADDRESS is the address of the code jumped to through the code field */ #define CODE_ADDRESS(cfa) (*(Label *)(cfa)) /* DOES_CODE is the Forth code does jumps to */ -#define DOES_CODE(cfa) (cfa[1]) -#define DOES_CODE1(cfa) DOES_CODE(cfa) +#define DOES_CODE(cfa) ({Xt _cfa=(Xt)(cfa); \ + _cfa[0] == symbols[DODOES] ? _cfa[1] : NULL;}) +#define DOES_CODE1(cfa) (cfa[1]) /* MAKE_CF creates an appropriate code field at the cfa; ca is the code address */ #define MAKE_CF(cfa,ca) ((*(Label *)(cfa)) = ((Label)ca))