From: Taylor R. Campbell Date: Sun, 10 Feb 2008 21:35:46 +0000 (+0000) Subject: Avoid a race condition with the GC daemon in LOOKUP-UNCOMPRESSED-FILE. X-Git-Tag: 20090517-FFI~338 X-Git-Url: https://birchwood-abbey.net/git?a=commitdiff_plain;h=8d4b903bbb5f0c9cc1efd9b62522423d791f5efc;p=mit-scheme.git Avoid a race condition with the GC daemon in LOOKUP-UNCOMPRESSED-FILE. --- diff --git a/v7/src/runtime/infutl.scm b/v7/src/runtime/infutl.scm index 5f8e6d461..d25acb8bd 100644 --- a/v7/src/runtime/infutl.scm +++ b/v7/src/runtime/infutl.scm @@ -1,6 +1,6 @@ #| -*-Scheme-*- -$Id: infutl.scm,v 1.74 2008/01/30 20:02:31 cph Exp $ +$Id: infutl.scm,v 1.75 2008/02/10 21:35:46 riastradh Exp $ Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, @@ -752,11 +752,14 @@ USA. (cond ((null? entries) (if-not-found)) ((and (pathname=? (caar entries) compressed-file) - (cddar entries) - (or (file-exists? (cadar entries)) - (begin - (set-cdr! (cdar entries) #f) - #f))) + ;; Avoid a subtle race condition with the GC daemon. + (let ((time (cddar entries))) + (set-cdr! (cdar entries) (real-time-clock)) + (and time + (or (file-exists? (cadar entries)) + (begin + (set-cdr! (cdar entries) #f) + #f))))) (dynamic-wind (lambda () unspecific) (lambda ()