~ chicken-core (chicken-5) 045f51386a07ca9a5df6597610f62caa42eb82b2
commit 045f51386a07ca9a5df6597610f62caa42eb82b2
Author: Mario Domenech Goulart <mario.goulart@gmail.com>
AuthorDate: Fri Aug 5 23:15:23 2016 +0200
Commit: Evan Hanson <evhan@foldling.org>
CommitDate: Thu Aug 11 21:54:42 2016 +1200
create-temporary-directory: don't try to mkdir if a file with the same name exists
By checking for the existence of a _directory_ in
create-temporary-directory, the following program would eventually
cause a runtime error, as a _file_ with the same name would exist:
(use files)
(let loop ()
(create-temporary-file "")
(create-temporary-directory)
(loop))
Error: (create-temporary-directory) cannot create temporary directory
- File exists: ...
Use file-exists? instead of directory-exists? to work around this
issue.
Signed-off-by: Evan Hanson <evhan@foldling.org>
diff --git a/files.scm b/files.scm
index 00753980..4caf665d 100644
--- a/files.scm
+++ b/files.scm
@@ -183,7 +183,7 @@ EOF
(number->string n 16)
"."
(##sys#number->string (##sys#fudge 33)))))) ; PID
- (if (directory-exists? pn)
+ (if (file-exists? pn)
(loop)
(let ((r (##core#inline "C_mkdir" (##sys#make-c-string pn 'create-temporary-directory))))
(if (eq? r 0)
Trap