From: <cli...@li...> - 2004-12-14 12:03:02
|
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/src lispbibl.d,1.587,1.588 spvw.d,1.331,1.332 ChangeLog,1.3936,1.3937 (Bruno Haible) 2. clisp/src spvw_genera1.d,1.28,1.29 ChangeLog,1.3937,1.3938 (Bruno Haible) 3. clisp/src spvw_genera1.d,1.29,1.30 ChangeLog,1.3938,1.3939 (Bruno Haible) 4. clisp/src lispbibl.d,1.588,1.589 ChangeLog,1.3939,1.3940 (Bruno Haible) 5. clisp/src lispbibl.d,1.589,1.590 spvw_fault.d,1.20,1.21 spvw_garcol.d,1.91,1.92 spvw_global.d,1.18,1.19 ChangeLog,1.3940,1.3941 (Bruno Haible) 6. clisp/src intparam.c,1.9,1.10 floatparam.c,1.1,1.2 ChangeLog,1.3941,1.3942 (Bruno Haible) 7. clisp/utils ccmp2c.c,1.7,1.8 ccpaux.c,1.3,1.4 comment5.c,1.11,1.12 deema.c,1.3,1.4 gctrigger.d,1.1,1.2 txt2c.c,1.4,1.5 varbrace.d,1.6,1.7 (Bruno Haible) 8. clisp/src win32.d,1.49,1.50 ChangeLog,1.3942,1.3943 (Bruno Haible) 9. clisp/tests macro8.tst,1.54,1.55 (Bruno Haible) 10. clisp/src compiler.lisp,1.233,1.234 ChangeLog,1.3943,1.3944 (Bruno Haible) 11. clisp/src format.lisp,1.36,1.37 ChangeLog,1.3944,1.3945 (Bruno Haible) --__--__-- Message: 1 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src lispbibl.d,1.587,1.588 spvw.d,1.331,1.332 ChangeLog,1.3936,1.3937 Date: Tue, 14 Dec 2004 11:50:06 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12258/src Modified Files: lispbibl.d spvw.d ChangeLog Log Message: New debug flag DEBUG_COMPILER. Index: spvw.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw.d,v retrieving revision 1.331 retrieving revision 1.332 diff -u -d -r1.331 -r1.332 --- spvw.d 13 Dec 2004 21:40:08 -0000 1.331 +++ spvw.d 14 Dec 2004 11:50:01 -0000 1.332 @@ -1372,7 +1372,7 @@ { # initialize *FEATURES* : var const char * features_initstring = "(:CLISP :ANSI-CL :COMMON-LISP :LISP=CL :INTERPRETER" - #ifdef DEBUG_SPVW + #ifdef DEBUG_COMPILER " :CLISP-DEBUG" #endif #ifdef MULTITHREAD Index: lispbibl.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/lispbibl.d,v retrieving revision 1.587 retrieving revision 1.588 diff -u -d -r1.587 -r1.588 --- lispbibl.d 13 Dec 2004 12:11:38 -0000 1.587 +++ lispbibl.d 14 Dec 2004 11:49:50 -0000 1.588 @@ -26,6 +26,7 @@ DEBUG_SPVW DEBUG_BYTECODE DEBUG_BACKTRACE + DEBUG_COMPILER Flags that may be set through CFLAGS, in order to override the defaults: Object representation (on 32-bit platforms only): TYPECODES, HEAPCODES, STANDARD_HEAPCODES, LINUX_NOEXEC_HEAPCODES, WIDE Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3936 retrieving revision 1.3937 diff -u -d -r1.3936 -r1.3937 --- ChangeLog 13 Dec 2004 21:47:40 -0000 1.3936 +++ ChangeLog 14 Dec 2004 11:50:01 -0000 1.3937 @@ -1,3 +1,8 @@ +2004-12-08 Bruno Haible <br...@cl...> + + * spvw.d (init_object_tab): Make the :CLISP-DEBUG feature depend on + DEBUG_COMPILER, not DEBUG_SPVW. + 2004-12-13 Sam Steingold <sd...@gn...> * stream.d (clear_output_terminal3): fix a GC-safety bug --__--__-- Message: 2 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src spvw_genera1.d,1.28,1.29 ChangeLog,1.3937,1.3938 Date: Tue, 14 Dec 2004 11:51:16 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12658/src Modified Files: spvw_genera1.d ChangeLog Log Message: Make DEBUG_SPVW work in HEAPCODES && GENERATIONAL_GC mode. Index: spvw_genera1.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw_genera1.d,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- spvw_genera1.d 28 May 2004 12:00:58 -0000 1.28 +++ spvw_genera1.d 14 Dec 2004 11:51:14 -0000 1.29 @@ -1047,25 +1047,29 @@ local bool gc_check_at (gcv_object_t* objptr) { var object obj = *objptr; + var uintL heapnr; + #ifdef TYPECODES var tint type = typecode(obj); #ifdef SPVW_PURE if (is_unused_heap(type)) return false; + heapnr = type; #else if (gcinvariant_type_p(type)) return false; + heapnr = mem.heapnr_from_type[type]; #endif - var aint addr = canonaddr(obj); - var Heap* heap; - #ifdef SPVW_PURE - heap = &mem.heaps[type]; - #else # SPVW_MIXED - heap = &mem.heaps[mem.heapnr_from_type[type]]; + #else + if (gcinvariant_object_p(obj)) + return false; + heapnr = nonimmediate_heapnr(obj); #endif + var aint addr = canonaddr(obj); + var Heap* heap = &mem.heaps[heapnr]; if ((addr >= heap->heap_gen0_start) && (addr < heap->heap_gen0_end)) return false; #ifdef SPVW_MIXED_BLOCKS_OPPOSITE - if (is_cons_heap(mem.heapnr_from_type[type])) { + if (is_cons_heap(heapnr)) { if ((addr >= heap->heap_start) && (addr < heap->heap_gen1_end)) return true; # pointer into the new generation } else @@ -1074,11 +1078,28 @@ if ((addr >= heap->heap_gen1_start) && (addr < heap->heap_end)) return true; # pointer into the new generation } - if ((type == symbol_type) + if ( + #ifdef TYPECODES + (type == symbol_type) + #else + varobjectp(obj) + #endif && (as_oint(obj) - as_oint(symbol_tab_ptr_as_object(&symbol_tab)) < (sizeof(symbol_tab)<<(oint_addr_shift-addr_shift)) ) ) return false; + #ifdef HEAPCODES + if (varobjectp(obj)) { + # Test for a Subr. + var module_t* module; # traverse modules + for_modules(all_modules,{ + if (module->initialized && *module->stab_size > 0) + if (as_oint(obj) - as_oint(subr_tab_ptr_as_object(module->stab)) + <= (*module->stab_size - 1) * (sizeof(subr_t)<<(oint_addr_shift-addr_shift))) + return false; /* Not belonging to any generation! */ + }); + } + #endif abort(); } local void gc_overall_check() Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3937 retrieving revision 1.3938 diff -u -d -r1.3937 -r1.3938 --- ChangeLog 14 Dec 2004 11:50:01 -0000 1.3937 +++ ChangeLog 14 Dec 2004 11:51:14 -0000 1.3938 @@ -1,3 +1,8 @@ +2004-12-09 Bruno Haible <br...@cl...> + + Make DEBUG_SPVW work in HEAPCODES && GENERATIONAL_GC mode. + * spvw_genera1.d (gc_check_at): Add support for HEAPCODES mode. + 2004-12-08 Bruno Haible <br...@cl...> * spvw.d (init_object_tab): Make the :CLISP-DEBUG feature depend on --__--__-- Message: 3 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src spvw_genera1.d,1.29,1.30 ChangeLog,1.3938,1.3939 Date: Tue, 14 Dec 2004 11:52:20 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12868/src Modified Files: spvw_genera1.d ChangeLog Log Message: Make DEBUG_SPVW work in g++ && GENERATIONAL_GC mode. Index: spvw_genera1.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw_genera1.d,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- spvw_genera1.d 14 Dec 2004 11:51:14 -0000 1.29 +++ spvw_genera1.d 14 Dec 2004 11:52:17 -0000 1.30 @@ -1102,6 +1102,10 @@ #endif abort(); } + # Likewise, with a 'void' result. + local void gc_check_ptr_at (gcv_object_t* objptr) { + gc_check_at(objptr); + } local void gc_overall_check() { var uintL heapnr; @@ -1112,7 +1116,7 @@ var aint gen0_end = heap->heap_gen0_end; if (gen0_start < gen0_end) if (heap->physpages==NULL) { - walk_area_(heapnr,gen0_start,gen0_end,gc_check_at); # fallback + walk_area_(heapnr,gen0_start,gen0_end,gc_check_ptr_at); # fallback } else { var physpage_state_t* physpage = heap->physpages; gen0_start &= -physpagesize; @@ -1143,7 +1147,7 @@ } } else { # traverse the whole page-content: - walk_physpage_(heapnr,physpage,gen0_start,gen0_end,gc_check_at); + walk_physpage_(heapnr,physpage,gen0_start,gen0_end,gc_check_ptr_at); } physpage++; } while (gen0_start < gen0_end); Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3938 retrieving revision 1.3939 diff -u -d -r1.3938 -r1.3939 --- ChangeLog 14 Dec 2004 11:51:14 -0000 1.3938 +++ ChangeLog 14 Dec 2004 11:52:17 -0000 1.3939 @@ -1,5 +1,11 @@ 2004-12-09 Bruno Haible <br...@cl...> + Make DEBUG_SPVW work in g++ && GENERATIONAL_GC mode. + * spvw_genera1.d (gc_check_ptr_at): New function. + (gc_overall_check): Use it instead of gc_check_at. + +2004-12-09 Bruno Haible <br...@cl...> + Make DEBUG_SPVW work in HEAPCODES && GENERATIONAL_GC mode. * spvw_genera1.d (gc_check_at): Add support for HEAPCODES mode. --__--__-- Message: 4 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src lispbibl.d,1.588,1.589 ChangeLog,1.3939,1.3940 Date: Tue, 14 Dec 2004 11:53:43 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13222/src Modified Files: lispbibl.d ChangeLog Log Message: Fix the SP() macro on SPARC64. Index: lispbibl.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/lispbibl.d,v retrieving revision 1.588 retrieving revision 1.589 diff -u -d -r1.588 -r1.589 --- lispbibl.d 14 Dec 2004 11:49:50 -0000 1.588 +++ lispbibl.d 14 Dec 2004 11:53:39 -0000 1.589 @@ -7894,7 +7894,11 @@ #define ASM_get_SP_register(resultvar) ("movel "REGISTER_PREFIX"sp,%0" : "=g" (resultvar) : ) #endif #ifdef SPARC - #define ASM_get_SP_register(resultvar) ("mov %%sp,%0" : "=r" (resultvar) : ) + #ifdef SPARC64 + #define ASM_get_SP_register(resultvar) ("add %%sp,2048,%0" : "=r" (resultvar) : ) + #else + #define ASM_get_SP_register(resultvar) ("mov %%sp,%0" : "=r" (resultvar) : ) + #endif #endif #ifdef HPPA #define ASM_get_SP_register(resultvar) ("copy %%r30,%0" : "=r" (resultvar) : ) @@ -7952,7 +7956,11 @@ #endif #elif defined(GNU) && defined(SP_register) register __volatile__ aint __SP __asm__(SP_register); - #define SP() __SP + #ifdef SPARC64 + #define SP() (__SP+2048) + #else + #define SP() __SP + #endif #if defined(SPARC) # We must not do a setSP() here without taking care that # 1. %sp has to pay attention to an alignment of 8 Bytes, Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3939 retrieving revision 1.3940 diff -u -d -r1.3939 -r1.3940 --- ChangeLog 14 Dec 2004 11:52:17 -0000 1.3939 +++ ChangeLog 14 Dec 2004 11:53:40 -0000 1.3940 @@ -1,5 +1,10 @@ 2004-12-09 Bruno Haible <br...@cl...> + * lispbibl.d (ASM_get_SP_register, SP) [SPARC64]: Respect the bias of + 2048 bytes. + +2004-12-09 Bruno Haible <br...@cl...> + Make DEBUG_SPVW work in g++ && GENERATIONAL_GC mode. * spvw_genera1.d (gc_check_ptr_at): New function. (gc_overall_check): Use it instead of gc_check_at. --__--__-- Message: 5 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src lispbibl.d,1.589,1.590 spvw_fault.d,1.20,1.21 spvw_garcol.d,1.91,1.92 spvw_global.d,1.18,1.19 ChangeLog,1.3940,1.3941 Date: Tue, 14 Dec 2004 11:55:13 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13489/src Modified Files: lispbibl.d spvw_fault.d spvw_garcol.d spvw_global.d ChangeLog Log Message: Make DEBUG_GCSAFETY work with GENERATIONAL_GC && MORRIS_GC. Index: spvw_global.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw_global.d,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- spvw_global.d 25 Nov 2004 11:39:46 -0000 1.18 +++ spvw_global.d 14 Dec 2004 11:55:09 -0000 1.19 @@ -266,6 +266,9 @@ #endif +# Set during the core of GC. +bool inside_gc = false; + # check of the memory content to be GC-proof: #if defined(SPVW_PAGES) && defined(DEBUG_SPVW) # check, if the administration of the pages is okay: Index: spvw_fault.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw_fault.d,v retrieving revision 1.20 retrieving revision 1.21 diff -u -d -r1.20 -r1.21 --- spvw_fault.d 25 Nov 2004 11:39:46 -0000 1.20 +++ spvw_fault.d 14 Dec 2004 11:55:09 -0000 1.21 @@ -62,6 +62,13 @@ # subroutine for protection: PROT_NONE -> PROT_READ local int handle_read_fault (aint address, physpage_state_t* physpage) { + # During GC the physpage cache contents may be abused by MORRIS_GC, + # so don't use it. + if (inside_gc) { + fprintf(stderr,"\n*** - " "handle_fault called at a point inside GC where it shouldn't!\n"); + errno = 0; + return -1; + } # bring page up to date with the state of the cache: { var uintL count = physpage->cache_size; Index: spvw_garcol.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/spvw_garcol.d,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- spvw_garcol.d 11 Dec 2004 14:16:05 -0000 1.91 +++ spvw_garcol.d 14 Dec 2004 11:55:09 -0000 1.92 @@ -1582,6 +1582,7 @@ #endif # No more gc_mark operations from here on. clean_weakpointers(all_weakpointers); + inside_gc = true; # All active objects are marked now: # active objects of variable length and active two-pointer-objects carry # in their first byte a set mark bit, active SUBRs carry @@ -1735,6 +1736,9 @@ # finally, the conses are relocated and simultaneously, all # pointers to them (at present, maintained in lists!) are updated. for_each_cons_page_reversed(page, { gc_morris2(page); } ); + #endif + inside_gc = false; + #ifdef MORRIS_GC for_each_cons_page(page, { gc_morris3(page); } ); #endif # now, all active objects are provided with correct content (all @@ -2228,6 +2232,7 @@ gc_signalblock_on(); # disable signals during Garbage Collection gc_timer_on(); CHECK_GC_UNMARKED(); CHECK_NULLOBJ(); + inside_gc = true; { var uintL heapnr; for (heapnr=0; heapnr<heapcount; heapnr++) @@ -2311,6 +2316,7 @@ recalc_space(true); free_delayed_pages(); free_some_unused_pages(); + inside_gc = false; CHECK_AVL_CONSISTENCY(); CHECK_GC_CONSISTENCY(); CHECK_GC_UNMARKED(); CHECK_NULLOBJ(); Index: lispbibl.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/lispbibl.d,v retrieving revision 1.589 retrieving revision 1.590 diff -u -d -r1.589 -r1.590 --- lispbibl.d 14 Dec 2004 11:53:39 -0000 1.589 +++ lispbibl.d 14 Dec 2004 11:55:09 -0000 1.590 @@ -3632,6 +3632,15 @@ #endif +# Set during the core of GC. +# When this is set, unexpected handle_fault() calls that can +# - if defined(MORRIS_GC) && defined(GENERATIONAL_GC) - copy +# Morris-chain backpointers from a cons cell to an old_new_pointer_t with set +# garcol_bit(!) into the heap, where they are guaranteed to lead to a crash +# later. So, uncontrolled memory accesses are forbidden while inside_gc. +extern bool inside_gc; + + #ifdef DEBUG_GCSAFETY # Forward declarations. @@ -3645,10 +3654,16 @@ # Force a crash if a memory pointer points to nonexistent memory. #define nonimmprobe(obj_o) \ do { \ - if (((obj_o) & wbit(garcol_bit_o)) == 0) /* exclude frame words from the STACK */ \ - if (!gcinvariant_oint_p(obj_o)) /* exclude immediate objects */ \ - /* Access a single char, without needing to subtract the bias. */ \ - *(volatile char *)(((aint)((obj_o) >> oint_addr_shift) & (aint)(oint_addr_mask >> oint_addr_shift)) <<addr_shift); \ + /* Don't do probes inside GC. It leads to unexpected handle_fault() \ + calls that can - if defined(MORRIS_GC) && defined(GENERATIONAL_GC) - \ + copy Morris-chain backpointers from a cons cell to an old_new_pointer_t \ + with set garcol_bit(!) into the heap, where they are guaranteed to \ + lead to a crash later. */ \ + if (!inside_gc) \ + if (((obj_o) & wbit(garcol_bit_o)) == 0) /* exclude frame words from the STACK */ \ + if (!gcinvariant_oint_p(obj_o)) /* exclude immediate objects */ \ + /* Access a single char, without needing to subtract the bias. */ \ + *(volatile char *)(((aint)((obj_o) >> oint_addr_shift) & (aint)(oint_addr_mask >> oint_addr_shift)) <<addr_shift); \ } while (0) # When a gcv_object_t is fetched from a GC visible location (in the heap or @@ -6928,7 +6943,9 @@ #ifdef DEBUG_GCSAFETY # This is used by pgci_pointable, so it cannot use pgci_pointable itself. static inline bool nonimmsubrp (object obj) { - return (varobjectp(obj) && (varobject_type((Record)(cgci_pointable(obj)-varobject_bias)) == Rectype_Subr)); + return (varobjectp(obj) + && (inside_gc /* Avoid doing memory accesses during GC. */ + || (varobject_type((Record)(cgci_pointable(obj)-varobject_bias)) == Rectype_Subr))); } #endif #endif Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3940 retrieving revision 1.3941 diff -u -d -r1.3940 -r1.3941 --- ChangeLog 14 Dec 2004 11:53:40 -0000 1.3940 +++ ChangeLog 14 Dec 2004 11:55:09 -0000 1.3941 @@ -1,5 +1,16 @@ 2004-12-09 Bruno Haible <br...@cl...> + Make DEBUG_GCSAFETY work with GENERATIONAL_GC && MORRIS_GC. + * lispbibl.d (inside_gc): New declaration. + (nonimmprobe, nonimmsubrp): Don't access memory if inside_gc. + * spvw_global.d (inside_gc): New variable. + * spvw_garcol.d (gar_col_normal, gar_col_compact): Set and reset + inside_gc. + * spvw_fault.d (handle_read_fault): Verify that this isn't called + inside_gc. + +2004-12-09 Bruno Haible <br...@cl...> + * lispbibl.d (ASM_get_SP_register, SP) [SPARC64]: Respect the bias of 2048 bytes. --__--__-- Message: 6 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src intparam.c,1.9,1.10 floatparam.c,1.1,1.2 ChangeLog,1.3941,1.3942 Date: Tue, 14 Dec 2004 11:56:57 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13951/src Modified Files: intparam.c floatparam.c ChangeLog Log Message: Fix the write error checking on stdout. Index: floatparam.c =================================================================== RCS file: /cvsroot/clisp/clisp/src/floatparam.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- floatparam.c 22 Jul 2002 12:08:56 -0000 1.1 +++ floatparam.c 14 Dec 2004 11:56:55 -0000 1.2 @@ -128,6 +128,6 @@ main_ldouble(); #endif - if (ferror(stdout)) exit(1); + if (ferror(stdout) || fclose(stdout)) exit(1); exit(0); } Index: intparam.c =================================================================== RCS file: /cvsroot/clisp/clisp/src/intparam.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- intparam.c 16 Mar 2004 14:08:05 -0000 1.9 +++ intparam.c 14 Dec 2004 11:56:55 -0000 1.10 @@ -594,10 +594,10 @@ main9(); main10(); #if defined(__cplusplus) - if (ferror(stdout)) return 1; + if (ferror(stdout) || fclose(stdout)) return 1; return 0; #else - if (ferror(stdout)) { exit(1); } + if (ferror(stdout) || fclose(stdout)) { exit(1); } exit(0); #endif } Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3941 retrieving revision 1.3942 diff -u -d -r1.3941 -r1.3942 --- ChangeLog 14 Dec 2004 11:55:09 -0000 1.3941 +++ ChangeLog 14 Dec 2004 11:56:55 -0000 1.3942 @@ -1,3 +1,21 @@ +2004-12-12 Bruno Haible <br...@cl...> + + Fix the error checking of stdout. When writing to a full disk over an + NFS or CODA file system, write() writes into a operating system's + buffer, fflush() succeeds, and only fclose() fails. + * intparam.c (main): Check the error status of fclose(stdout). + * floatparam.c (main): Likewise. + * utils/ccmp2c.c (main): Check the error status of fclose(stdout) + instead of fflush(stdout). + * utils/ccpaux.c (main): Likewise. + * utils/deema.c (main): Likewise. + * utils/txt2c.c (main): Likewise. + * utils/comment5.c (main): Likewise. No need to fclose(stdin). + * utils/varbrace.d (main): Likewise. + * utils/gctrigger.d (main): No need to call fflush(stdout) before + fclose(stdout). + Reported by Jim Meyering. + 2004-12-09 Bruno Haible <br...@cl...> Make DEBUG_GCSAFETY work with GENERATIONAL_GC && MORRIS_GC. --__--__-- Message: 7 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/utils ccmp2c.c,1.7,1.8 ccpaux.c,1.3,1.4 comment5.c,1.11,1.12 deema.c,1.3,1.4 gctrigger.d,1.1,1.2 txt2c.c,1.4,1.5 varbrace.d,1.6,1.7 Date: Tue, 14 Dec 2004 11:56:58 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/utils In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13951/utils Modified Files: ccmp2c.c ccpaux.c comment5.c deema.c gctrigger.d txt2c.c varbrace.d Log Message: Fix the write error checking on stdout. Index: varbrace.d =================================================================== RCS file: /cvsroot/clisp/clisp/utils/varbrace.d,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- varbrace.d 27 Oct 2003 20:04:20 -0000 1.6 +++ varbrace.d 14 Dec 2004 11:56:55 -0000 1.7 @@ -1508,13 +1508,8 @@ # Main job. convert(infile,outfile,infilename); # Clean up. - if (ferror(infile) || fflush(outfile) || ferror(outfile)) { - fclose(infile); - fclose(outfile); + if (ferror(infile) || ferror(outfile) || fclose(outfile)) exit(1); - } - fclose(infile); - fclose(outfile); exit(0); } Index: deema.c =================================================================== RCS file: /cvsroot/clisp/clisp/utils/deema.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- deema.c 23 Oct 2000 12:57:21 -0000 1.3 +++ deema.c 14 Dec 2004 11:56:55 -0000 1.4 @@ -21,7 +21,7 @@ putchar(c); c1 = c; } - if (ferror(stdin) || fflush(stdout) || ferror(stdout)) { exit(1); } + if (ferror(stdin) || ferror(stdout) || fclose(stdout)) { exit(1); } exit(0); } Index: comment5.c =================================================================== RCS file: /cvsroot/clisp/clisp/utils/comment5.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- comment5.c 2 Oct 2003 11:26:24 -0000 1.11 +++ comment5.c 14 Dec 2004 11:56:55 -0000 1.12 @@ -141,11 +141,8 @@ /* error checking should work after file closing, but it does not */ if (ferror(infile)) { perror(infilenamebuffer); exit(__LINE__); } - if (fflush(outfile) || ferror(outfile)) + if (ferror(outfile) || fclose(outfile)) { perror(outfilenamebuffer); exit(__LINE__); } - /* close files: */ - fclose(infile); - fclose(outfile); exit(0); /* OK */ } Index: ccmp2c.c =================================================================== RCS file: /cvsroot/clisp/clisp/utils/ccmp2c.c,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- ccmp2c.c 16 Mar 2004 14:08:05 -0000 1.7 +++ ccmp2c.c 14 Dec 2004 11:56:55 -0000 1.8 @@ -1428,13 +1428,13 @@ for (i = 0; i < main_output.index; i++) emit_control_directive (&main_output.data[i]); } - printf (" if (fflush (stdout) || ferror (stdout))\n"); + printf (" if (ferror (stdout) || fclose (stdout))\n"); printf (" exit (1);\n"); printf (" exit (0);\n"); printf ("}\n"); /* Done. */ - if (fflush (stdout) || ferror (stdout)) + if (ferror (stdout) || fclose (stdout)) exit (1); exit (0); } Index: gctrigger.d =================================================================== RCS file: /cvsroot/clisp/clisp/utils/gctrigger.d,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- gctrigger.d 11 Dec 2004 14:02:04 -0000 1.1 +++ gctrigger.d 14 Dec 2004 11:56:55 -0000 1.2 @@ -932,7 +932,7 @@ infile = stdin; outfile = stdout; convert(); - if (ferror(stdin) || fflush(stdout) || ferror(stdout) || fclose(stdout)) + if (ferror(stdin) || ferror(stdout) || fclose(stdout)) exit(1); exit(0); } Index: ccpaux.c =================================================================== RCS file: /cvsroot/clisp/clisp/utils/ccpaux.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- ccpaux.c 23 Oct 2000 12:57:21 -0000 1.3 +++ ccpaux.c 14 Dec 2004 11:56:55 -0000 1.4 @@ -47,7 +47,7 @@ c = getchar(); if (c==EOF) { goto eof; } goto rest; eof: ; - if (ferror(stdin) || fflush(stdout) || ferror(stdout)) { exit(1); } + if (ferror(stdin) || ferror(stdout) || fclose(stdout)) { exit(1); } exit(0); } Index: txt2c.c =================================================================== RCS file: /cvsroot/clisp/clisp/utils/txt2c.c,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- txt2c.c 31 Jul 2002 18:39:11 -0000 1.4 +++ txt2c.c 14 Dec 2004 11:56:55 -0000 1.5 @@ -135,9 +135,9 @@ printf("\n"); printf("int main () {\n"); process_file(stdin); - printf(" if (fflush(stdout) || ferror(stdout)) { exit(1); }\n"); + printf(" if (ferror(stdout) || fclose(stdout)) { exit(1); }\n"); printf(" exit(0);\n"); printf("}\n"); - if (fflush(stdout) || ferror(stdout)) { exit(1); } + if (ferror(stdout) || fclose(stdout)) { exit(1); } exit(0); } --__--__-- Message: 8 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src win32.d,1.49,1.50 ChangeLog,1.3942,1.3943 Date: Tue, 14 Dec 2004 11:57:56 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14224/src Modified Files: win32.d ChangeLog Log Message: Move include of <sys/types.h>. Index: win32.d =================================================================== RCS file: /cvsroot/clisp/clisp/src/win32.d,v retrieving revision 1.49 retrieving revision 1.50 diff -u -d -r1.49 -r1.50 --- win32.d 10 Dec 2004 10:12:52 -0000 1.49 +++ win32.d 14 Dec 2004 11:57:53 -0000 1.50 @@ -1,6 +1,6 @@ /* * Include file for WIN32_NATIVE version of CLISP - * Bruno Haible 1997-2003 + * Bruno Haible 1997-2004 * Sam Steingold 1999-2003 */ @@ -40,6 +40,10 @@ #define unused_void #endif +/* Declaration of operating system types, + in particular needed for ssize_t and before <sys/timeb.h> */ +#include <sys/types.h> + /* Shell object handling for shell link resolution */ #include <objbase.h> #include <shlobj.h> @@ -209,8 +213,6 @@ #define ERROR_SIGINT ERROR_SUCCESS /* Like ReadConsoleInput with Length==1, but is interruptible by Ctrl-C. */ extern BOOL ReadConsoleInput1 (HANDLE ConsoleInput, PINPUT_RECORD Buffer, LPDWORD NumberOfEventsRead); -/* definition for ssize_t in mingw */ -#include <sys/types.h> /* The following functions deal with all kinds of file/pipe/console handles */ extern int fd_read_wont_hang_p (HANDLE fd); extern ssize_t fd_read (HANDLE fd, void* buf, size_t nbyte, perseverance_t persev); Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3942 retrieving revision 1.3943 diff -u -d -r1.3942 -r1.3943 --- ChangeLog 14 Dec 2004 11:56:55 -0000 1.3942 +++ ChangeLog 14 Dec 2004 11:57:54 -0000 1.3943 @@ -1,5 +1,9 @@ 2004-12-12 Bruno Haible <br...@cl...> + * win32.d: Move include of <sys/types.h>. + +2004-12-12 Bruno Haible <br...@cl...> + Fix the error checking of stdout. When writing to a full disk over an NFS or CODA file system, write() writes into a operating system's buffer, fflush() succeeds, and only fclose() fails. --__--__-- Message: 9 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/tests macro8.tst,1.54,1.55 Date: Tue, 14 Dec 2004 11:58:26 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/tests In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14513/tests Modified Files: macro8.tst Log Message: Style: Make it clearer what is input and what is expected output. Index: macro8.tst =================================================================== RCS file: /cvsroot/clisp/clisp/tests/macro8.tst,v retrieving revision 1.54 retrieving revision 1.55 diff -u -d -r1.54 -r1.55 --- macro8.tst 7 Dec 2004 23:40:26 -0000 1.54 +++ macro8.tst 14 Dec 2004 11:58:23 -0000 1.55 @@ -866,10 +866,12 @@ (5 4 5 4 5 4) ;; <http://article.gmane.org/gmane.lisp.clisp.devel:13153> -(defun test-constant-folding (x) (* 1e30 x 1e30)) test-constant-folding +(defun test-constant-folding (x) (* 1e30 x 1e30)) +TEST-CONSTANT-FOLDING (multiple-value-list (compile 'test-constant-folding)) -(test-constant-folding 1 1) -(test-constant-folding 12) error +(TEST-CONSTANT-FOLDING 1 1) +(test-constant-folding 12) +ERROR ;; <http://article.gmane.org/gmane.lisp.clisp.general:9093> (multiple-value-list (compile nil #'test-constant-folding)) --__--__-- Message: 10 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src compiler.lisp,1.233,1.234 ChangeLog,1.3943,1.3944 Date: Tue, 14 Dec 2004 11:59:49 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14719/src Modified Files: compiler.lisp ChangeLog Log Message: Don't recursively compile-file modules that have already been loaded. Index: compiler.lisp =================================================================== RCS file: /cvsroot/clisp/clisp/src/compiler.lisp,v retrieving revision 1.233 retrieving revision 1.234 diff -u -d -r1.233 -r1.234 --- compiler.lisp 7 Dec 2004 23:40:26 -0000 1.233 +++ compiler.lisp 14 Dec 2004 11:59:40 -0000 1.234 @@ -3177,7 +3177,8 @@ ;; auxiliary function: REQUIRE on file-compilation, cf. function REQUIRE (defun c-REQUIRE (module-name &optional (pathname nil p-given) &aux (mod-name (module-name module-name))) - (unless (member mod-name *compiled-modules* :test #'string=) + (unless (or (member mod-name *modules* :test #'string=) + (member mod-name *compiled-modules* :test #'string=)) (unless p-given (setq pathname (pathname mod-name))) (flet ((load-lib (file) (let* ((*load-paths* Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3943 retrieving revision 1.3944 diff -u -d -r1.3943 -r1.3944 --- ChangeLog 14 Dec 2004 11:57:54 -0000 1.3943 +++ ChangeLog 14 Dec 2004 11:59:46 -0000 1.3944 @@ -1,3 +1,9 @@ +2004-11-28 Bruno Haible <br...@cl...> + + Don't recursively compile-file modules that have already been loaded. + * compiler.lisp (c-REQUIRE): Look for the module in both *modules* and + *compiled-modules*, not just *compiled-modules*. + 2004-12-12 Bruno Haible <br...@cl...> * win32.d: Move include of <sys/types.h>. --__--__-- Message: 11 From: Bruno Haible <ha...@us...> To: cli...@li... Subject: clisp/src format.lisp,1.36,1.37 ChangeLog,1.3944,1.3945 Date: Tue, 14 Dec 2004 12:01:04 +0000 Reply-To: cli...@li... Update of /cvsroot/clisp/clisp/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15024/src Modified Files: format.lisp ChangeLog Log Message: Fix handling of ~^ inside ~{...~} without colons. Index: format.lisp =================================================================== RCS file: /cvsroot/clisp/clisp/src/format.lisp,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- format.lisp 27 Oct 2004 11:05:04 -0000 1.36 +++ format.lisp 14 Dec 2004 12:01:01 -0000 1.37 @@ -1557,7 +1557,7 @@ (*FORMAT-CSDL* inner-csdl) (*FORMAT-UP-AND-OUT* nil)) (format-interpret stream 'FORMAT-ITERATION-END) - (when (eq *FORMAT-UP-AND-OUT* ':TERMINATE-ALL) (return))) + (when *FORMAT-UP-AND-OUT* (return))) (let* ((*FORMAT-ARG-LIST* arg-list-rest) (*FORMAT-NEXT-ARG* *FORMAT-ARG-LIST*) (*FORMAT-CS* inner-cs) @@ -1565,7 +1565,7 @@ (*FORMAT-UP-AND-OUT* nil)) (format-interpret stream 'FORMAT-ITERATION-END) (setq arg-list-rest *FORMAT-NEXT-ARG*) - (when (eq *FORMAT-UP-AND-OUT* ':TERMINATE-ALL) (return))))) + (when *FORMAT-UP-AND-OUT* (return))))) ;; inner-cs may be a function in the ~{~} case (if (functionp inner-cs) (if colon-modifier Index: ChangeLog =================================================================== RCS file: /cvsroot/clisp/clisp/src/ChangeLog,v retrieving revision 1.3944 retrieving revision 1.3945 diff -u -d -r1.3944 -r1.3945 --- ChangeLog 14 Dec 2004 11:59:46 -0000 1.3944 +++ ChangeLog 14 Dec 2004 12:01:01 -0000 1.3945 @@ -1,3 +1,8 @@ +2004-12-13 Bruno Haible <br...@cl...> + + * format.lisp (format-iteration): In the cases without colon, a + *FORMAT-UP-AND-OUT* = :TERMINATE terminates the entire construct. + 2004-11-28 Bruno Haible <br...@cl...> Don't recursively compile-file modules that have already been loaded. --__--__-- _______________________________________________ clisp-cvs mailing list cli...@li... https://lists.sourceforge.net/lists/listinfo/clisp-cvs End of clisp-cvs Digest |