From: <cli...@li...> - 2010-06-16 12:05:12
|
Send clisp-cvs mailing list submissions to cli...@li... To subscribe or unsubscribe via the World Wide Web, visit https://lists.sourceforge.net/lists/listinfo/clisp-cvs or, via email, send a message with subject or body 'help' to cli...@li... You can reach the person managing the list at cli...@li... When replying, please edit your Subject line so it is more specific than "Re: Contents of clisp-cvs digest..." CLISP CVS commits for today Today's Topics: 1. clisp/doc faq.xml,1.122,1.123 (Sam Steingold) 2. clisp/src eval.d,1.280,1.281 (Sam Steingold) 3. clisp/src ChangeLog,1.7412,1.7413 spvw_debug.d,1.91,1.92 (Sam Steingold) 4. clisp/src ChangeLog,1.7413,1.7414 pathname.d,1.517,1.518 (Sam Steingold) 5. clisp/tests ChangeLog,1.658,1.659 streamslong.tst,1.27,1.28 (Sam Steingold) 6. clisp/src ChangeLog, 1.7414, 1.7415 constobj.d, 1.219, 1.220 lispbibl.d, 1.907, 1.908 makemake.in, 1.918, 1.919 stream.d, 1.679, 1.680 (Sam Steingold) ---------------------------------------------------------------------- Message: 1 Date: Tue, 15 Jun 2010 14:30:45 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/doc faq.xml,1.122,1.123 To: cli...@li... Message-ID: <E1O...@sf...> Update of /cvsroot/clisp/clisp/doc In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv31181 Modified Files: faq.xml Log Message: faq-debug-gdbinit: mention more commands; mention help Index: faq.xml =================================================================== RCS file: /cvsroot/clisp/clisp/doc/faq.xml,v retrieving revision 1.122 retrieving revision 1.123 diff -u -d -r1.122 -r1.123 --- faq.xml 12 May 2010 16:00:37 -0000 1.122 +++ faq.xml 15 Jun 2010 14:30:43 -0000 1.123 @@ -284,11 +284,15 @@ <member><command>base</command></member> <member><command>full</command></member> <member><command>run_test</command></member> + <member><command>run_mod_test</command></member> <member><command>run_all_tests</command></member> - <member><command>ansi_tests</command></member> + <member><command>run_ansi_tests</command></member> + <member><command>run_ansi_tests_compiled</command></member> <member><command>xout</command></member> <member><command>zout</command></member> - </simplelist>and others.</para></formalpara> + <member><command>zbacktrace</command></member> + </simplelist>and others; <command>help &command-r;</command> in &gdb; + will tell you what &command-r; does.</para></formalpara> <formalpara id="faq-debug-macros"><title>Macros</title> <para>&clisp; makes heavy use of &cpp; macros ------------------------------ Message: 2 Date: Tue, 15 Jun 2010 20:16:32 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src eval.d,1.280,1.281 To: cli...@li... Message-ID: <E1O...@sf...> Update of /cvsroot/clisp/clisp/src In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv2309 Modified Files: eval.d Log Message: indentation Index: eval.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/eval.d,v retrieving revision 1.280 retrieving revision 1.281 diff -u -d -r1.280 -r1.281 --- eval.d 2 May 2010 20:27:56 -0000 1.280 +++ eval.d 15 Jun 2010 20:16:30 -0000 1.281 @@ -516,8 +516,8 @@ aktenv.decl_env = *ptr; ptr skipSTACKop 1; break; case (ENV2VD_frame_info & envbind_case_mask_t): /* 1 VAR_ENV and 1 DECL_ENV */ aktenv.var_env = *ptr; ptr skipSTACKop 1; - aktenv.decl_env = *ptr; ptr skipSTACKop 1; - break; + aktenv.decl_env = *ptr; ptr skipSTACKop 1; + break; case (ENV5_frame_info & envbind_case_mask_t): /* all 5 Environments */ aktenv.var_env = *ptr; ptr skipSTACKop 1; aktenv.fun_env = *ptr; ptr skipSTACKop 1; ------------------------------ Message: 3 Date: Tue, 15 Jun 2010 20:42:25 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src ChangeLog,1.7412,1.7413 spvw_debug.d,1.91,1.92 To: cli...@li... Message-ID: <E1O...@sf...> Update of /cvsroot/clisp/clisp/src In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv11502/src Modified Files: ChangeLog spvw_debug.d Log Message: (venv_out) [DEBUG_SPVW]: add Index: spvw_debug.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw_debug.d,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- spvw_debug.d 8 Oct 2009 14:57:29 -0000 1.91 +++ spvw_debug.d 15 Jun 2010 20:42:23 -0000 1.92 @@ -482,5 +482,32 @@ FUN(object,Cclosure,TheCclosure) FUN(object,int,Cclosure_length) FUN(object,Codevec,TheCodevec) +local void venv_out (FILE *out, object venv) { /* cf eval.d:symbol_env_search */ + begin_system_call(); + if (out == NULL) out = stdout; + next_env: + nobject_out(out,venv); fputc('\n',out); + if (framepointerp(venv)) { + var gcv_object_t* FRAME = TheFramepointer(venv); + var uintL count = as_oint(FRAME_(frame_count)); /* number of bindings */ + fprintf(out,"* count=%d\n",count); + if (count > 0) { + var gcv_object_t* bindingsptr = &FRAME_(frame_bindings); /* 1st binding */ + do { + #ifdef NO_symbolflags + nobject_out(out,*(bindingsptr STACKop 1)); + #else + nobject_out(out,*(bindingsptr STACKop 0)); + #endif + fputc('\n',out); + bindingsptr skipSTACKop varframe_binding_size; /* no: next binding */ + } while (--count); + } + venv = FRAME_(frame_next_env); + goto next_env; + } + fflush(out); + end_system_call(); +} #undef FUN #endif Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.7412 retrieving revision 1.7413 diff -u -d -r1.7412 -r1.7413 --- ChangeLog 14 Jun 2010 03:32:53 -0000 1.7412 +++ ChangeLog 15 Jun 2010 20:42:23 -0000 1.7413 @@ -1,3 +1,7 @@ +2010-06-15 Sam Steingold <sd...@gn...> + + * spvw_debug.d (venv_out) [DEBUG_SPVW]: add + 2010-06-13 Sam Steingold <sd...@gn...> * stream.d (BUILT-IN-STREAM-ELEMENT-TYPE): return NIL for an empty ------------------------------ Message: 4 Date: Tue, 15 Jun 2010 21:02:54 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src ChangeLog,1.7413,1.7414 pathname.d,1.517,1.518 To: cli...@li... Message-ID: <E1O...@sf...> Update of /cvsroot/clisp/clisp/src In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv17556/src Modified Files: ChangeLog pathname.d Log Message: (handle_directory_encoding_error): use unwind_upto instead of a home-brewed concoction Index: pathname.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/pathname.d,v retrieving revision 1.517 retrieving revision 1.518 diff -u -d -r1.517 -r1.518 --- pathname.d 1 Jun 2010 21:23:59 -0000 1.517 +++ pathname.d 15 Jun 2010 21:02:52 -0000 1.518 @@ -7209,12 +7209,8 @@ /* avoid nested handle_directory_encoding_error calls */ if (running_handle_directory_encoding_error) return; else running_handle_directory_encoding_error = true; - sp_jmp_buf *returner = (sp_jmp_buf*)(aint)sp; - unwind_back_trace(back_trace,frame); setSTACK(STACK = frame); value1 = condition; - LONGJMP_SAVE_value1(); LONGJMP_SAVE_mv_count(); begin_longjmp_call(); - longjmpspl(*returner,(aint)returner); /* return non-0! */ - NOTREACHED; + unwind_upto(frame); } local maygc object direntry_to_string (char* string, int len) { if (asciz_equal(string,".") || asciz_equal(string,"..")) return NIL; Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.7413 retrieving revision 1.7414 diff -u -d -r1.7413 -r1.7414 --- ChangeLog 15 Jun 2010 20:42:23 -0000 1.7413 +++ ChangeLog 15 Jun 2010 21:02:52 -0000 1.7414 @@ -1,5 +1,10 @@ 2010-06-15 Sam Steingold <sd...@gn...> + * pathname.d (handle_directory_encoding_error): use unwind_upto + instead of a home-brewed concoction + +2010-06-15 Sam Steingold <sd...@gn...> + * spvw_debug.d (venv_out) [DEBUG_SPVW]: add 2010-06-13 Sam Steingold <sd...@gn...> ------------------------------ Message: 5 Date: Tue, 15 Jun 2010 22:10:49 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/tests ChangeLog,1.658,1.659 streamslong.tst,1.27,1.28 To: cli...@li... Message-ID: <E1O...@sf...> Update of /cvsroot/clisp/clisp/tests In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv9758/tests Modified Files: ChangeLog streamslong.tst Log Message: Try to flush buffers even if CLOSE was called with :ABORT T. this partially reverts patch 2010-02-25 and fixes bug#3014919 * src/stream.d (handle_close_errors, MAYBE_IGNORE_ERRORS): add (close_str_in, close_buff_in): do not accept unused abort arg (builtin_stream_close): do not pass abort to them (close_buff_out, close_generic, close_ochannel, close_buffered): use MAYBE_IGNORE_ERRORS around calls which may signal errors (oconv_unshift_output_buffered): accept abort arg * src/constobj.d (handler_for_error): add * src/lispbibl.d (clisp_thread_t) [MULTITHREAD]: add _running_handle_close_errors (running_handle_close_errors) [MULTITHREAD]: define * src/makemake.in (check-script): test for bug#3014919 Index: streamslong.tst =================================================================== RCS file: /cvsroot/clisp/clisp/tests/streamslong.tst,v retrieving revision 1.27 retrieving revision 1.28 diff -u -d -r1.27 -r1.28 --- streamslong.tst 25 Nov 2009 22:16:31 -0000 1.27 +++ streamslong.tst 15 Jun 2010 22:10:47 -0000 1.28 @@ -251,3 +251,32 @@ (unwind-protect (list (f t "foo") (f nil "bar")) (delete-file fname)))) ((:EOF "foo") ("foo" "bar")) + +#+CLISP +(let* ((list ()) + (out (ext:make-buffered-output-stream (lambda (c) (push c list))))) + (list (write-char #\a out) + (close out) + list)) +#+CLISP (#\a T ("a")) + +#+CLISP +(let* ((list ()) + (out (ext:make-buffered-output-stream + (lambda (c) (push c list) (error (string c)))))) + (list (write-char #\a out) + (block b + (handler-bind ((error (lambda (c) + (princ-error c) (return-from b list)))) + (close out))))) +#+CLISP (#\a ("a")) + +#+CLISP +(let* ((list ()) + (out (ext:make-buffered-output-stream + (lambda (c) (push c list) (error (string c)))))) + (list (write-char #\a out) + (close out :abort t) + list + (princ-to-string out))) +#+CLISP (#\a T ("a") "#<CLOSED OUTPUT BUFFERED-OUTPUT-STREAM NIL>") Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/tests/ChangeLog,v retrieving revision 1.658 retrieving revision 1.659 diff -u -d -r1.658 -r1.659 --- ChangeLog 14 Jun 2010 03:32:53 -0000 1.658 +++ ChangeLog 15 Jun 2010 22:10:47 -0000 1.659 @@ -1,3 +1,8 @@ +2010-06-15 Sam Steingold <sd...@gn...> + + * streamslong.tst: test EXT:MAKE-BUFFERED-OUTPUT-STREAM, + including (close :abort) + 2010-06-13 Sam Steingold <sd...@gn...> * streams.tst: bug#3014921: (stream-element-type ------------------------------ Message: 6 Date: Tue, 15 Jun 2010 22:10:49 +0000 From: Sam Steingold <sd...@us...> Subject: clisp/src ChangeLog, 1.7414, 1.7415 constobj.d, 1.219, 1.220 lispbibl.d, 1.907, 1.908 makemake.in, 1.918, 1.919 stream.d, 1.679, 1.680 To: cli...@li... Message-ID: <E1O...@sf...> Update of /cvsroot/clisp/clisp/src In directory sfp-cvsdas-2.v30.ch3.sourceforge.com:/tmp/cvs-serv9758/src Modified Files: ChangeLog constobj.d lispbibl.d makemake.in stream.d Log Message: Try to flush buffers even if CLOSE was called with :ABORT T. this partially reverts patch 2010-02-25 and fixes bug#3014919 * src/stream.d (handle_close_errors, MAYBE_IGNORE_ERRORS): add (close_str_in, close_buff_in): do not accept unused abort arg (builtin_stream_close): do not pass abort to them (close_buff_out, close_generic, close_ochannel, close_buffered): use MAYBE_IGNORE_ERRORS around calls which may signal errors (oconv_unshift_output_buffered): accept abort arg * src/constobj.d (handler_for_error): add * src/lispbibl.d (clisp_thread_t) [MULTITHREAD]: add _running_handle_close_errors (running_handle_close_errors) [MULTITHREAD]: define * src/makemake.in (check-script): test for bug#3014919 Index: constobj.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/constobj.d,v retrieving revision 1.219 retrieving revision 1.220 diff -u -d -r1.219 -r1.220 --- constobj.d 7 Oct 2009 20:05:51 -0000 1.219 +++ constobj.d 15 Jun 2010 22:10:46 -0000 1.220 @@ -496,6 +496,7 @@ LISPOBJ(type_string_with_fill_pointer,"(AND STRING (SATISFIES ARRAY-HAS-FILL-POINTER-P))") /* type for error-message */ /* also used in PATHNAME */ LISPOBJ(handler_for_charset_type_error,"(#(SYSTEM::CHARSET-TYPE-ERROR NIL))") + LISPOBJ(handler_for_error,"(#(ERROR NIL))") LISPOBJ(setf_stream_element_type,"(SETF STREAM-ELEMENT-TYPE)") LISPOBJ(type_endianness,"(MEMBER :LITTLE :BIG)") /* type for error-message */ LISPOBJ(type_open_file_stream,"(AND FILE-STREAM (SATISFIES OPEN-STREAM-P))") /* type for error-message */ Index: makemake.in =================================================================== RCS file: /cvsroot/clisp/clisp/src/makemake.in,v retrieving revision 1.918 retrieving revision 1.919 diff -u -d -r1.918 -r1.919 --- makemake.in 10 Jun 2010 17:54:42 -0000 1.918 +++ makemake.in 15 Jun 2010 22:10:46 -0000 1.919 @@ -3034,7 +3034,8 @@ echotab "\$(RM) script.lisp; echo '(with-open-stream (s (make-stream :output :element-type (quote (unsigned-byte 8)))) (write-sequence ${seq42} s) (values))' > script.lisp" echotab "test \`\$(RUN) -q -M lispinit.mem < script.lisp ${TRCR}\` = 42 || exit 1" echotab "test \`\$(RUN) -q -M lispinit.mem script.lisp ${TRCR}\` = 42 || exit 1" - echotab "\$(RM) script.lisp" + echotab "\$(RM) nohup.out; nohup \$(RUN) -q -M lispinit.mem -x 42; test \`tail -n 1 nohup.out\` = 42 || exit 1 " + echotab "\$(RM) script.lisp nohup.out" echol # check that the executable images work Index: lispbibl.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/lispbibl.d,v retrieving revision 1.907 retrieving revision 1.908 diff -u -d -r1.907 -r1.908 --- lispbibl.d 15 Apr 2010 20:45:31 -0000 1.907 +++ lispbibl.d 15 Jun 2010 22:10:46 -0000 1.908 @@ -17085,8 +17085,8 @@ void* _SP_anchor; gcv_object_t* _STACK_bound; gcv_object_t* _STACK_start; - /* moved here from pathname.d */ - bool _running_handle_directory_encoding_error; + bool _running_handle_directory_encoding_error; /* used in pathname.d */ + bool _running_handle_close_errors; /* used in stream.d */ /* do not rely on SA_NODEFER for signal nesting */ spinlock_t _signal_reenter_ok; /* Following are related to thread interruption */ @@ -17415,6 +17415,8 @@ #endif #define running_handle_directory_encoding_error \ current_thread()->_running_handle_directory_encoding_error + #define running_handle_close_errors \ + current_thread()->_running_handle_close_errors #if (int_bitsize < long_bitsize) #define jmpl_value current_thread()->_jmpl_value #endif Index: stream.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/stream.d,v retrieving revision 1.679 retrieving revision 1.680 diff -u -d -r1.679 -r1.680 --- stream.d 14 Jun 2010 03:32:53 -0000 1.679 +++ stream.d 15 Jun 2010 22:10:46 -0000 1.680 @@ -2428,9 +2428,8 @@ /* Closes a String-Input-Stream. close_str_in(stream, abort); - > stream : String-Input-Stream - > abort: flag: non-0 => ignore errors */ -local maygc void close_str_in (object stream, uintB abort) { + > stream : String-Input-Stream */ +local maygc void close_str_in (object stream) { TheStream(stream)->strm_str_in_string = NIL; /* String := NIL */ } @@ -2865,9 +2864,8 @@ /* Closes a Buffered-Input-Stream. close_buff_in(stream, abort); - > stream : Buffered-Input-Stream - > abort: flag: non-0 => ignore errors */ -local maygc void close_buff_in (object stream, uintB abort) { + > stream : Buffered-Input-Stream */ +local maygc void close_buff_in (object stream) { TheStream(stream)->strm_buff_in_fun = NIL; /* Function := NIL */ TheStream(stream)->strm_buff_in_mode = NIL; /* Mode := NIL */ TheStream(stream)->strm_buff_in_string = NIL; /* String := NIL */ @@ -2953,6 +2951,29 @@ VALUES1(index); } +/* handling of (close :abort): ignore the error and proceed to close FDs */ +#if !defined(MULTITHREAD) +/* should be per thread - moved to clisp_thread_t in MT */ +local bool running_handle_close_errors = false; +#endif +local void handle_close_errors (void* sp, gcv_object_t* frame, object label, + object condition) { + if (running_handle_close_errors) return; + else running_handle_close_errors = true; + unwind_upto(frame); +} +#define MAYBE_IGNORE_ERRORS(abort,code) \ + if (abort) { \ + var sp_jmp_buf returner; /* return point */ \ + running_handle_close_errors = false; \ + make_HANDLER_entry_frame(O(handler_for_error), handle_close_errors, \ + returner, goto end_ignore_errors; ); \ + } \ + code; \ + if (abort) running_handle_close_errors = false; \ + end_ignore_errors: \ + if (abort) { unwind_HANDLER_frame(); } + /* Buffered-Output-Stream ====================== @@ -3019,7 +3040,7 @@ can trigger GC */ local maygc void close_buff_out (object stream, uintB abort) { pushSTACK(stream); /* save stream */ - finish_output_buff_out(stream); + MAYBE_IGNORE_ERRORS(abort,finish_output_buff_out(stream)); stream = popSTACK(); /* restore stream */ TheStream(stream)->strm_buff_out_fun = NIL; /* Function := NIL */ TheStream(stream)->strm_buff_out_string = NIL; /* String := NIL */ @@ -3181,8 +3202,10 @@ /* (CLOSE s) == (GENERIC-STREAM-CLOSE c) */ local maygc void close_generic (object stream, uintB abort) { - pushSTACK(stream); funcall(L(generic_stream_controller),1); - pushSTACK(value1); funcall(S(generic_stream_close),1); + MAYBE_IGNORE_ERRORS(abort, { + pushSTACK(stream); funcall(L(generic_stream_controller),1); + pushSTACK(value1); funcall(S(generic_stream_close),1); + }); } LISPFUNN(generic_stream_controller,1) { @@ -5852,10 +5875,8 @@ > abort: flag: non-0 => ignore errors */ local maygc void close_ochannel (object stream, uintB abort) { pushSTACK(stream); - if (!abort) { - oconv_unshift_output_unbuffered(stream); - stream = STACK_0; - } + MAYBE_IGNORE_ERRORS(abort,oconv_unshift_output_unbuffered(stream)); + stream = STACK_0; ChannelStreamLow_close(stream)(stream,TheStream(stream)->strm_ochannel,abort); stream = popSTACK(); ChannelStream_fini(stream,abort); @@ -7176,11 +7197,10 @@ oconv_unshift_output_buffered(stream); > stream: Buffered-Channel-Stream */ #if defined(ENABLE_UNICODE) && defined(HAVE_GOOD_ICONV) - #define oconv_unshift_output_buffered(stream) \ - if (ChannelStream_oconvdesc(stream) != (iconv_t)0) { \ - oconv_unshift_output_buffered_(stream); \ - } -local maygc void oconv_unshift_output_buffered_ (object stream) { + #define oconv_unshift_output_buffered(stream,abort) \ + ((ChannelStream_oconvdesc(stream) != (iconv_t)0) \ + ? oconv_unshift_output_buffered_(stream,abort) : 0) +local maygc uintB oconv_unshift_output_buffered_ (object stream, uintB abort) { #define tmpbufsize 4096 var uintB tmpbuf[tmpbufsize]; var char* outptr = (char*)tmpbuf; @@ -7189,6 +7209,7 @@ var size_t res = iconv(ChannelStream_oconvdesc(stream),NULL,NULL,&outptr,&outsize); if (res == (size_t)(-1)) { + if (abort) return 1; if (OS_errno == E2BIG) { /* output buffer too small? */ NOTREACHED; } else { @@ -7204,10 +7225,11 @@ /* increment position */ BufferedStream_position(stream) += outcount; } + return 0; #undef tmpbufsize } #else - #define oconv_unshift_output_buffered(stream) + #define oconv_unshift_output_buffered(stream,abort) #endif /* File-Stream, Bit-based @@ -8275,7 +8297,7 @@ return; pushSTACK(stream); /* flush pending Output in the iconv-Descriptor: */ - oconv_unshift_output_buffered(stream); + oconv_unshift_output_buffered(stream,0); stream = STACK_0; /* poss. flush Buffer and eofposition: */ buffered_flush_everything(stream); @@ -8349,15 +8371,14 @@ if (nullp(BufferedStream_channel(stream))) return; pushSTACK(stream); - if (!abort) { - /* Flush pending Output in the iconv-Descriptor: */ - oconv_unshift_output_buffered(stream); + /* Flush pending Output in the iconv-Descriptor: */ + if (!oconv_unshift_output_buffered(stream,abort)) { /* success */ stream = STACK_0; /* poss. flush Buffer and eofposition: */ - buffered_flush_everything(stream); - stream = STACK_0; - } else BufferedStream_modified(stream) = false; - /* Now the modified_flag is deleted. + MAYBE_IGNORE_ERRORS(abort,buffered_flush_everything(stream)); + } + stream = STACK_0; + /* Now the modified_flag is deleted (unless aborted!) close File: */ ChannelStreamLow_close(stream)(stream,BufferedStream_channel(stream),abort); stream = popSTACK(); @@ -16153,6 +16174,10 @@ builtin_stream_close(&stream, abort); > stream: Builtin-Stream > abort: flag: non-0 => ignore errors: may be called from GC & quit() + -- if abort is non-0, we end up calling close(2) on the underlying object + no matter what else might have failed (iconv, buffer flushing &c) + -- even if abort is non-0, we do try to flush buffers et al, but we do that + under IGNORE-ERRORS, i.e., some output might be silently lost < stream: Builtin-Stream can trigger GC */ modexp maygc void builtin_stream_close @@ -16169,11 +16194,11 @@ case strmtype_concat: break; /* non-recursive */ case strmtype_twoway: break; /* non-recursive */ case strmtype_echo: break; /* non-recursive */ - case strmtype_str_in: close_str_in(stream,abort); break; + case strmtype_str_in: close_str_in(stream); break; case strmtype_str_out: break; case strmtype_str_push: break; case strmtype_pphelp: break; - case strmtype_buff_in: close_buff_in(stream,abort); break; + case strmtype_buff_in: close_buff_in(stream); break; case strmtype_buff_out: close_buff_out(stream,abort); break; #ifdef GENERIC_STREAMS case strmtype_generic: close_generic(stream,abort); break; Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.7414 retrieving revision 1.7415 diff -u -d -r1.7414 -r1.7415 --- ChangeLog 15 Jun 2010 21:02:52 -0000 1.7414 +++ ChangeLog 15 Jun 2010 22:10:46 -0000 1.7415 @@ -1,5 +1,21 @@ 2010-06-15 Sam Steingold <sd...@gn...> + Try to flush buffers even if CLOSE was called with :ABORT T. + this partially reverts patch 2010-02-25 and fixes bug#3014919 + * stream.d (handle_close_errors, MAYBE_IGNORE_ERRORS): add + (close_str_in, close_buff_in): do not accept unused abort arg + (builtin_stream_close): do not pass abort to them + (close_buff_out, close_generic, close_ochannel, close_buffered): + use MAYBE_IGNORE_ERRORS around calls which may signal errors + (oconv_unshift_output_buffered): accept abort arg + * constobj.d (handler_for_error): add + * lispbibl.d (clisp_thread_t) [MULTITHREAD]: add + _running_handle_close_errors + (running_handle_close_errors) [MULTITHREAD]: define + * makemake.in (check-script): test for bug#3014919 + +2010-06-15 Sam Steingold <sd...@gn...> + * pathname.d (handle_directory_encoding_error): use unwind_upto instead of a home-brewed concoction ------------------------------ ------------------------------------------------------------------------------ ThinkGeek and WIRED's GeekDad team up for the Ultimate GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the lucky parental unit. See the prize list and enter to win: http://p.sf.net/sfu/thinkgeek-promo ------------------------------ _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest, Vol 50, Issue 14 ***************************************** |