=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/parse/glob.c,v retrieving revision 1.79 retrieving revision 1.84 diff -u -p -r1.79 -r1.84 --- OpenXM_contrib2/asir2000/parse/glob.c 2010/08/03 04:34:44 1.79 +++ OpenXM_contrib2/asir2000/parse/glob.c 2013/11/29 08:21:29 1.84 @@ -45,7 +45,7 @@ * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE, * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE. * - * $OpenXM: OpenXM_contrib2/asir2000/parse/glob.c,v 1.78 2010/08/01 08:44:15 ohara Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/parse/glob.c,v 1.83 2012/12/17 07:20:45 noro Exp $ */ #include "ca.h" #include "al.h" @@ -167,7 +167,7 @@ void glob_init() { reallocarray((char **)&APVS->va,(int *)&APVS->asize,(int *)&APVS->n,(int)sizeof(struct oPV)); reallocarray((char **)&PPVS->va,(int *)&PPVS->asize,(int *)&PPVS->n,(int)sizeof(struct oPV)); CPVS = GPVS; - MKNODE(ONENODE,mkfnode(1,I_FORMULA,ONE),0); + MKNODE(ONENODE,mkfnode(1,I_FORMULA,ONE),NULLP); OID(F_TRUE)=O_F; FOP(F_TRUE)=AL_TRUE; F_TRUE->arg.dummy = 0; OID(F_FALSE)=O_F; FOP(F_FALSE)=AL_FALSE; F_FALSE->arg.dummy = 0; OID(Symbol_grlex) = O_SYMBOL; Symbol_grlex->name = "@grlex"; @@ -503,6 +503,7 @@ void fatal(int n) } extern int ox_int_received, critical_when_signal; +extern int in_gc, caught_intr; void int_handler(int sig) { @@ -517,6 +518,10 @@ void int_handler(int sig) ox_int_received = 1; return; } + if ( in_gc ) { + caught_intr = 1; + return; + } #if defined(VISUAL) suspend_timer(); #endif @@ -790,11 +795,7 @@ char *get_asir_distribution(); char *get_gcversion() { -#if defined(GC7) - return "GC 7.1 copyright 1988-2008, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n"; -#else - return "GC 6.8 copyright 1988-2006, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n"; -#endif + return "GC 7.2 copyright 1988-2012, H-J. Boehm, A. J. Demers, Xerox, SGI, HP.\n"; } char *get_pariversion() @@ -842,3 +843,19 @@ char *scopyright() } return notice; } + +#if defined(VISUAL) +void check_intr() +{ + extern int recv_intr; + if ( recv_intr ) { + if ( recv_intr == 1 ) { + recv_intr = 0; + int_handler(0); + } else { + recv_intr = 0; + ox_usr1_handler(0); + } + } +} +#endif