[plt-scheme] scheme_signal_error
At Tue, 15 Apr 2003 17:59:12 +0200, Olivier ORABONA wrote:
> Scheme_Object* foo(void* p, int argc, Scheme_Object** argv) {
> Scheme_Object* tmp = argv[O];
> while(!SCHEME_NULLP(tmp)) {
> if(bar(SCHEME_CAR(tmp))==BAD_INPUT)
> scheme_signal_error("Bad Input");
> tmp=SCHEME_CDR(tmp);
> }
> return scheme_true;
> }
I'm stumped at the moment, so just to be sure on on track:
Are you certain that the crash occurs in scheme_signal_error() and not
with SCHEME_CAR() --- or, when you tried it, SCHEME_PAIRP()?
I ask because, if `tmp' is not a valid Scheme object, SCHEME_CAR() is
likely to crash by attempting to derefence the pointer. SCHEME_PAIRP()
will crash similarly. (SCHEME_NULLP() is diffrent; it merely compares
`tmp' to another pointer.)
Matthew