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

version 1.248, 2012/03/23 22:21:51 version 1.249, 2012/03/23 22:39:00
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();
        
   do {    install_signal_handlers(); /* right place? */
     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);
     debugp(stderr, "setjmp(%p)\n", *throw_jmp_handler);    while((throw_code=setjmp(*throw_jmp_handler))) {
     if((throw_code=setjmp(*throw_jmp_handler))) {      signal_data_stack[15]=throw_code;
       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;  
 #else  /* !defined(GFORTH_DEBUGGING) */  
       debugp(stderr,"\ncaught signal, throwing exception %d\n", throw_code);  
       rp0 = signal_return_stack+16;        rp0 = signal_return_stack+16;
   #else  /* !defined(GFORTH_DEBUGGING) */
       debugp(stderr,"\ncaught signal, throwing exception %d\n", throw_code);
       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.248  
changed lines
  Added in v.1.249


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