Fixes long-standing random hang of exec. 2009-05-25 Samuel Thibault * exec.c (finish): Set FILE_DATA and MAP_BUFFER members of E to NULL after freeing them. Index: exec/exec.c =================================================================== RCS file: /cvsroot/hurd/hurd/exec/exec.c,v retrieving revision 1.93 diff -u -p -r1.93 exec.c --- exec/exec.c 2 Apr 2009 23:06:37 -0000 1.93 +++ exec/exec.c 25 May 2009 09:39:35 -0000 @@ -1008,10 +1008,13 @@ finish (struct execdata *e, int dealloc_ #ifdef EXECDATA_STREAM fclose (&e->stream); #else - if (e->file_data != NULL) + if (e->file_data != NULL) { free (e->file_data); - else if (map_buffer (e) != NULL) + e->file_data = NULL; + } else if (map_buffer (e) != NULL) { munmap (map_buffer (e), map_vsize (e)); + map_buffer (e) = NULL; + } #endif } if (dealloc_file && e->file != MACH_PORT_NULL)