From: Sam S. <sd...@gn...> - 2002-11-11 00:06:38
|
> * In message <20021110195928.2164.qmail@g.bio.cse.psu.edu> > * On the subject of "[clisp-list] bug report: 2.30 writes garbage to stdout" > * Sent on Sun, 10 Nov 2002 14:59:28 -0500 > * Honorable Scott Schwartz <sch...@bi...> writes: > > bash% clisp foo.cl 2>/dev/null </dev/zero | head why do you re-direct input to /dev/zero?! > *** - Lisp stack overflow. RESET > > *** - READ from #<IO SYNONYM-STREAM *TERMINAL-IO*>: illegal character #\Null[1]> of course: NULL (which is what is read from /dev/zero) is an illegal char. > This exhibits several horrible defects in clisp. It should print an > error message (about stack overflow) to standard error and then simply > exit. well, this is what CLISP usually does. stack overflow appears to be different. please try the appended patch. > Second, it writes garbage to standard output. No runtime system can > ever be allowed to do that. you gave a bad stdin. > Third, the break loop reads from standard input. where a break loop should read from?! > I'm not subscribed to clisp-list, so please cc any replies. I cannot guarantee that everyone who replies to your message will do your bidding. gmane.org is your friend. -- Sam Steingold (http://www.podval.org/~sds) running RedHat8 GNU/Linux <http://www.camera.org> <http://www.iris.org.il> <http://www.memri.org/> <http://www.mideasttruth.com/> <http://www.palestine-central.com/links.html> Every day above ground is a good day. --- spvw.d.~1.204.~ 2002-11-01 13:09:51.000000000 -0500 +++ spvw.d 2002-11-10 19:04:24.000000000 -0500 @@ -474,11 +474,17 @@ # At overflow of one of the stacks: nonreturning_function(global, SP_ueber, (void)) { asciz_out(GETTEXTL(NLstring "*** - " "Program stack overflow. RESET")); + if (interactive_stream_p(Symbol_value(S(debug_io)))) reset(); + /* non-interactive session: quit */ + else { asciz_out(NLstring); final_exitcode=1; quit(); } } nonreturning_function(global, STACK_ueber, (void)) { asciz_out(GETTEXTL(NLstring "*** - " "Lisp stack overflow. RESET")); + if (interactive_stream_p(Symbol_value(S(debug_io)))) reset(); + /* non-interactive session: quit */ + else { asciz_out(NLstring); final_exitcode=1; quit(); } } # ---------------------------------------------------------------------------- |