franz/lam8.c
/* Lctcherr
  this routine should only be called by the unwind protect simulation
  lisp code
  It is called after an unwind-protect frame has been entered and
  evalated and we want to get on with the error or throw
  We only handle the case where there are 0 to 2 extra arguments to the
  error call.
*/
Lctcherr
this routine should only be called by the unwind protect simulation
lisp code
It is called after an unwind-protect frame has been entered and
evalated and we want to get on with the error or throw
We only handle the case where there are 0 to 2 extra arguments to the
error call.
Lctcherr this routine should only be called by the unwind protect simulation lisp code It is called after an unwind - protect frame has been entered and evalated and we want to get on with the error or throw We only handle the case where there are 0 to 2 extra arguments to the error call .
lispval
Lctcherr()
{
	register lispval handy;
	lispval type,messg,valret,contuab,uniqid,datum1,datum2;
	chkarg(1,"I-throw-err");
	handy = lbot->val;
	if(TYPE(handy->d.car) == INT)
	{	
		Inonlocalgo((int)handy->d.car->i,
			    handy->d.cdr->d.car, 
			    handy->d.cdr->d.cdr->d.car);
	}
	if(handy->d.car != nil)
	{
	    errorh1(Vermisc,"I-do-throw: first element not fixnum or nil",
	           nil,FALSE,0,handy);
	}
	handy = handy->d.cdr;
	type = handy->d.car;
	handy = handy->d.cdr;
	messg = handy->d.car;
	handy = handy->d.cdr;
	valret = handy->d.car;
	handy = handy->d.cdr;
	contuab = handy->d.car;
	handy = handy->d.cdr;
	uniqid = handy->d.car;
	handy = handy->d.cdr;
	if(handy == nil)
	{
	  errorh(type,messg->a.pname,valret,(int)contuab->i,(int)uniqid->i);
	}
	datum1 = handy->d.car;
	handy = handy->d.cdr;
	if(handy == nil)
	{
	  errorh1(type,messg->a.pname,valret,(int)contuab->i,(int)uniqid->i,datum1);
	}
	datum2 = handy->d.car;
	errorh2(type,messg->a.pname,valret,(int)contuab->i,(int)uniqid->i,datum1,datum2);
}
lispval Lctcherr ( ) { register lispval handy ; lispval type , messg , valret , contuab , uniqid , datum1 , datum2 ; chkarg ( 1 , " " ) ; handy = lbot -> val ; if ( TYPE ( handy -> d . car ) == INT ) { Inonlocalgo ( ( int ) handy -> d . car -> i , handy -> d . cdr -> d . car , handy -> d . cdr -> d . cdr -> d . car ) ; } if ( handy -> d . car != nil ) { errorh1 ( Vermisc , " " , nil , FALSE , 0 , handy ) ; } handy = handy -> d . cdr ; type = handy -> d . car ; handy = handy -> d . cdr ; messg = handy -> d . car ; handy = handy -> d . cdr ; valret = handy -> d . car ; handy = handy -> d . cdr ; contuab = handy -> d . car ; handy = handy -> d . cdr ; uniqid = handy -> d . car ; handy = handy -> d . cdr ; if ( handy == nil ) { errorh ( type , messg -> a . pname , valret , ( int ) contuab -> i , ( int ) uniqid -> i ) ; } datum1 = handy -> d . car ; handy = handy -> d . cdr ; if ( handy == nil ) { errorh1 ( type , messg -> a . pname , valret , ( int ) contuab -> i , ( int ) uniqid -> i , datum1 ) ; } datum2 = handy -> d . car ; errorh2 ( type , messg -> a . pname , valret , ( int ) contuab -> i , ( int ) uniqid -> i , datum1 , datum2 ) ; }
Lctcherr
this routine should only be called by the unwind protect simulation
lisp code
It is called after an unwind-protect frame has been entered and
evalated and we want to get on with the error or throw
We only handle the case where there are 0 to 2 extra arguments to the
error call.
Lctcherr this routine should only be called by the unwind protect simulation lisp code It is called after an unwind - protect frame has been entered and evalated and we want to get on with the error or throw We only handle the case where there are 0 to 2 extra arguments to the error call .
/* continuing a non error (throw,reset, etc) */ /* NOT REACHED */ /* decode the arg list */ /* if not extra args */ /* if one extra arg */ /* if two or more extra args, just use first 2 */