Diff for /gforth/engine/main.c between versions 1.247 and 1.248

version 1.247, 2012/03/23 21:48:06 version 1.248, 2012/03/23 22:21:51
Line 727  int gforth_go(void *image, int stack, Ce Line 727  int gforth_go(void *image, int stack, Ce
   
 #if defined(SYSSIGNALS) && !defined(STANDALONE)  #if defined(SYSSIGNALS) && !defined(STANDALONE)
   get_winsize();    get_winsize();
        
   install_signal_handlers(); /* right place? */    do {
       install_signal_handlers(); /* right place? */
   throw_jmp_handler = &throw_jmp_buf;      
       throw_jmp_handler = &throw_jmp_buf;
   debugp(stderr, "setjmp(%p)\n", *throw_jmp_handler);      
   while((throw_code=setjmp(*throw_jmp_handler))) {      debugp(stderr, "setjmp(%p)\n", *throw_jmp_handler);
     signal_data_stack[15]=throw_code;      if((throw_code=setjmp(*throw_jmp_handler))) {
         signal_data_stack[15]=throw_code;
         
 #ifdef GFORTH_DEBUGGING  #ifdef GFORTH_DEBUGGING
     debugp(stderr,"\ncaught signal, throwing exception %d, ip=%p rp=%p\n",        debugp(stderr,"\ncaught signal, throwing exception %d, ip=%p rp=%p\n",
               throw_code, saved_ip, rp);               throw_code, saved_ip, rp);
     if (rp <= orig_rp0 && rp > (Cell *)(image_header->return_stack_base+5)) {        if (rp <= orig_rp0 && rp > (Cell *)(image_header->return_stack_base+5)) {
       /* no rstack overflow or underflow */          /* no rstack overflow or underflow */
       rp0 = rp;          rp0 = rp;
       *--rp0 = (Cell)saved_ip;          *--rp0 = (Cell)saved_ip;
     }        }
     else /* I love non-syntactic ifdefs :-) */        else /* I love non-syntactic ifdefs :-) */
       rp0 = signal_return_stack+16;          rp0 = signal_return_stack+16;
 #else  /* !defined(GFORTH_DEBUGGING) */  #else  /* !defined(GFORTH_DEBUGGING) */
     debugp(stderr,"\ncaught signal, throwing exception %d\n", throw_code);        debugp(stderr,"\ncaught signal, throwing exception %d\n", throw_code);
     rp0 = signal_return_stack+16;        rp0 = signal_return_stack+16;
 #endif /* !defined(GFORTH_DEBUGGING) */  #endif /* !defined(GFORTH_DEBUGGING) */
     /* fprintf(stderr, "rp=$%x\n",rp0);*/        /* fprintf(stderr, "rp=$%x\n",rp0);*/
             
     ip0=image_header->throw_entry;        ip0=image_header->throw_entry;
     sp0=signal_data_stack+15;        sp0=signal_data_stack+15;
     fp0=signal_fp_stack;        fp0=signal_fp_stack;
   }      }
     } while(throw_code);
 #endif  #endif
   
   return((int)(Cell)gforth_engine(ip0,sp0,rp0,fp0,lp0 sr_call));    return((int)(Cell)gforth_engine(ip0,sp0,rp0,fp0,lp0 sr_call));

Removed from v.1.247  
changed lines
  Added in v.1.248


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>