From 0f9cc7a19e941bfe7b5ce756aeb059a355d15cc9 Mon Sep 17 00:00:00 2001 From: Rene Rivera Date: Tue, 15 Nov 2005 05:44:03 +0000 Subject: [PATCH] Fix atexit crashes because string for temp files got freed before they got used on the at exit file deletes. [SVN r31658] --- src/engine/filesys.c | 15 ++++++--------- src/engine/jam.c | 2 +- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/engine/filesys.c b/src/engine/filesys.c index 604a80c19..3fbea962f 100644 --- a/src/engine/filesys.c +++ b/src/engine/filesys.c @@ -59,11 +59,6 @@ file_info_t * file_info(char * filename) return finfo; } -void file_done() -{ - hashdone( filecache_hash ); -} - static LIST * files_to_remove = L0; static void remove_files_atexit(void) @@ -77,11 +72,13 @@ static void remove_files_atexit(void) } } +void file_done() +{ + remove_files_atexit(); + hashdone( filecache_hash ); +} + void file_remove_atexit( const char * path ) { - if ( L0 == files_to_remove ) - { - atexit(&remove_files_atexit); - } files_to_remove = list_new( files_to_remove, newstr((char*)path) ); } diff --git a/src/engine/jam.c b/src/engine/jam.c index d20922dd6..633f19b1d 100644 --- a/src/engine/jam.c +++ b/src/engine/jam.c @@ -509,10 +509,10 @@ int main( int argc, char **argv, char **arg_environ ) /* Widely scattered cleanup */ var_done(); + file_done(); donerules(); donestamps(); donestr(); - file_done(); /* close cmdout */