libc/stdio: Fix tmpnam() - scc - simple c99 compiler
HTML git clone git://git.simple-cc.org/scc
DIR Log
DIR Files
DIR Refs
DIR README
DIR LICENSE
---
DIR commit d681ea0ce2e1903f5047140fb3bcb6da1dc0e673
DIR parent 6c5c5ab6a9adc01a81abbc1cc6e2b26d0b9a53fb
HTML Author: Roberto E. Vargas Caballero <k0ga@shike2.net>
Date: Tue, 12 May 2026 12:15:06 +0200
libc/stdio: Fix tmpnam()
The logic to find the digits to increment was wrong and
it returned FALSE always.
Diffstat:
M src/libc/stdio/tmpnam.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
---
DIR diff --git a/src/libc/stdio/tmpnam.c b/src/libc/stdio/tmpnam.c
@@ -11,18 +11,20 @@ char *
tmpnam(char *s)
{
static char tmpl[] = _TMPNAME;
- char *p;
+ char *p, *beg;
- for (;;) {
- for (p = tmpl; *p && *p != '9'; ++p)
+
+ for (beg = tmpl; *beg < '0' || *beg > '9'; ++beg)
+ ;
+
+ do {
+ for (p = beg; *p == '9'; *p++ = '0')
;
if (*p == '\0')
return NULL;
++*p;
+ } while (_access(tmpl, F_OK) == 0);
- if (_access(tmpl, F_OK) != 0)
- break;
- }
if (s)
strcpy(s, tmpl);
return tmpl;