>Hm, looking at head?, it really looks wrong. Try replacing it with this:
>
>: head? ( addr -- f )
>\G heuristic check whether addr is a name token; may deliver false
>\G positives; addr must be a valid address
> dup dup aligned <>
> if
> drop false exit \ heads are aligned
> then
> name>string dup $1F > if
> 2drop false exit \ realistically the name is short
> then
> + cfaligned @ here forthstart within ; \ and the cfa is outside
That does look more straightforward. But it doesn't eliminate the
problem I was having. I guess I never gave a good minimal test case.
This should reproduce it for reliably:
here 32 cells erase wordlist .voc
Hmm...a zero-length name should always be an invalid header, so I assume
replacing `$1F >` with `$20 1 WITHIN` should be OK?
--Josh