(sem_open): Avoid double unlink.
authordrepper <drepper>
Tue, 25 Feb 2003 08:24:16 +0000 (08:24 +0000)
committerdrepper <drepper>
Tue, 25 Feb 2003 08:24:16 +0000 (08:24 +0000)
nptl/sem_open.c

index 5def4ff..3395b58 100644 (file)
@@ -230,9 +230,6 @@ sem_open (const char *name, int oflag, ...)
          /* Create the file.  Don't overwrite an existing file.  */
          if (link (tmpfname, finalname) != 0)
            {
-             /* Remove the file.  */
-             unlink (tmpfname);
-
              /* Undo the mapping.  */
              (void) munmap (result, sizeof (sem_t));
 
@@ -242,7 +239,12 @@ sem_open (const char *name, int oflag, ...)
              /* This failed.  If O_EXCL is not set and the problem was
                 that the file exists, try again.  */
              if ((oflag & O_EXCL) == 0 && errno == EEXIST)
-               goto try_again;
+               {
+                 /* Remove the file.  */
+                 (void) unlink (tmpfname);
+
+                 goto try_again;
+               }
            }
        }