ron@trsvax.UUCP (02/07/85)
The new posting of XLISP hangs forever when trying to load 'pt.lsp' on a vax 780 under BSD 4.1. In the routine 'gc', there is a "for" loop that keeps going over and over the same nodes to mark and never exits. Interestingly enough, this problem does not show up if the program is hand typed, just if loaded in from the file. .... memo from the desk of Ron Light Fort Worth, Texas ... {ctvax,microsoft,ihnp4!sys1}!trsvax!ron ... cu-arpa.trsvax!ron@Cornell.ARPA
jgpo@ihu1e.UUCP (John, KA9MNK) (02/16/85)
> The new posting of XLISP hangs forever when trying to load 'pt.lsp' on > a vax 780 under BSD 4.1. In the routine 'gc', there is a "for" loop > that keeps going over and over the same nodes to mark and never exits. > Interestingly enough, this problem does not show up if the program is > hand typed, just if loaded in from the file. > > .... memo from the desk of Ron Light > Fort Worth, Texas > ... {ctvax,microsoft,ihnp4!sys1}!trsvax!ron > ... cu-arpa.trsvax!ron@Cornell.ARPA The bug is in the xlload() routine in xlread.c. The source (beginning at line 44) currently reads: /* open the file */ if ((fp = fopen(fname,"r")) == NULL) return (FALSE); Change this to: /* open the file */ if ((fp = fopen(fname,"r")) == NULL) { xlstack = oldstk; return (FALSE); } John Opalko AT&T Bell Labs Naperville, IL ...!ihnp4!ihu1e!jgpo
mark@digi-g.UUCP (Mark Mendel) (04/03/85)
The consists of contexts not being popped when a throw occurs! This occurs, for instance, when an error occurs within a non-error cathing context, like a tagblock: (prog () (*unbound*)) causes core dumps. The fix: *** xljump.c Tue Apr 2 14:52:44 1985 --- =orig/xljump.c Thu Mar 21 09:41:51 1985 *************** *** 39,45 xlunbind(cptr->c_xlenv); xlnewenv = cptr->c_xlnewenv; xltrace = cptr->c_xltrace; - xlcontext = cptr; /* call the handler */ longjmp(cptr->c_jmpbuf,type); --- 39,44 ----- xlunbind(cptr->c_xlenv); xlnewenv = cptr->c_xlnewenv; xltrace = cptr->c_xltrace; /* call the handler */ longjmp(cptr->c_jmpbuf,type);