diff --git a/mercurial/posix.py b/mercurial/posix.py
index 3232f92360d4da06d304ea6856568c9a3ab2e6b7_bWVyY3VyaWFsL3Bvc2l4LnB5..77c121da614327a579b3b4e5b173da947915acf3_bWVyY3VyaWFsL3Bvc2l4LnB5 100644
--- a/mercurial/posix.py
+++ b/mercurial/posix.py
@@ -156,9 +156,12 @@
     name = tempfile.mktemp(dir=path, prefix='hg-checklink-')
     try:
         fd = tempfile.NamedTemporaryFile(dir=path, prefix='hg-checklink-')
-        os.symlink(os.path.basename(fd.name), name)
-        os.unlink(name)
-        return True
+        try:
+            os.symlink(os.path.basename(fd.name), name)
+            os.unlink(name)
+            return True
+        finally:
+            fd.close()
     except AttributeError:
         return False
     except OSError, inst: