From: Bruno Haible <bruno@cl...> - 2003-07-31 14:12:43
> pushSTACK(listof()) and STACK_1=listof() are illegal because
> listof() (and vectorof() &c) modify the STACK,
> so the whole expression becomes undefined!
Yes: in the expression
STACK = listof()
the compiler is free to evaluate STACK before or after the listof() call.
> I just learned this the hard way
Ouch, and it was my fault.
> mingw/g++ compiled
> pushSTACK(listof()) differently from mingw/gcc which resulted in errors.
Interesting! So you can test both sides of the compiler's "undefined behaviour"
on the same machine.
> the weird thing is that I found a pushSTACK(listof()) in
> this is _the_ most often called function in the whole CLISP!
Can you remove this bug of mine from interpret_bytecode_()?
> how come this never caught up with us before?!
Few people use a g++ - compiled clisp for real use. Only since the
GCSAFETY checks in last December you do so...