On Thu, 25 Aug 2016 13:56:24 -0700, Philip Guenther wrote: > This: > > if (blah) { > size_t len; > ... > } else { > size_t len; > ... > } > > looks noisy to me, so I would lean towards your latter idea.
Yeah, I just liked len being scoped that way. However, I see other places we really want to use a size_t for length so I suppose we can use it elsewhere too. - todd Index: lib/libc/stdio/vfprintf.c =================================================================== RCS file: /cvs/src/lib/libc/stdio/vfprintf.c,v retrieving revision 1.75 diff -u -p -u -r1.75 vfprintf.c --- lib/libc/stdio/vfprintf.c 17 Aug 2016 22:15:08 -0000 1.75 +++ lib/libc/stdio/vfprintf.c 25 Aug 2016 21:39:16 -0000 @@ -486,6 +486,8 @@ __vfprintf(FILE *fp, const char *fmt0, _ * Scan the format for conversions (`%' character). */ for (;;) { + size_t len; + cp = fmt; while ((n = mbrtowc(&wc, fmt, MB_CUR_MAX, &ps)) > 0) { fmt += n; @@ -886,22 +888,10 @@ fp_common: cp = "(null)"; } - if (prec >= 0) { - /* - * can't use strlen; can only look for the - * NUL in the first `prec' characters, and - * strlen() will go further. - */ - char *p = memchr(cp, 0, prec); - - size = p ? (p - cp) : prec; - } else { - size_t len; - - if ((len = strlen(cp)) > INT_MAX) - goto overflow; - size = (int)len; - } + len = prec >= 0 ? strnlen(cp, prec) : strlen(cp); + if (len > INT_MAX) + goto overflow; + size = (int)len; sign = '\0'; break; case 'U':