make tmpfile fail after exceeding max tries.
authorRich Felker <dalias@aerifal.cx>
Tue, 29 Mar 2011 12:37:57 +0000 (08:37 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 29 Mar 2011 12:37:57 +0000 (08:37 -0400)
src/stdio/tmpfile.c

index b050f7f..a6b7223 100644 (file)
@@ -3,14 +3,17 @@
 #include <unistd.h>
 #include "stdio_impl.h"
 
 #include <unistd.h>
 #include "stdio_impl.h"
 
+#define MAXTRIES 100
+
 FILE *tmpfile(void)
 {
        char buf[L_tmpnam], *s;
        int fd;
        FILE *f;
 FILE *tmpfile(void)
 {
        char buf[L_tmpnam], *s;
        int fd;
        FILE *f;
-       for (;;) {
+       int try;
+       for (try=0; try<MAXTRIES; try++) {
                s = tmpnam(buf);
                s = tmpnam(buf);
-               if (!s) return NULL;
+               if (!s) return 0;
                fd = syscall(SYS_open, s, O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600);
                if (fd >= 0) {
                        f = __fdopen(fd, "w+");
                fd = syscall(SYS_open, s, O_RDWR|O_CREAT|O_EXCL|O_LARGEFILE, 0600);
                if (fd >= 0) {
                        f = __fdopen(fd, "w+");
@@ -18,6 +21,7 @@ FILE *tmpfile(void)
                        return f;
                }
        }
                        return f;
                }
        }
+       return 0;
 }
 
 LFS64(tmpfile);
 }
 
 LFS64(tmpfile);