From aed8bcfc2b5d64c8beec781cdd789d9b41450170 Mon Sep 17 00:00:00 2001 From: stefanf Date: Mon, 11 Apr 2005 10:57:54 +0000 Subject: Replace buggy for-loops to skip certain character with strspn(). If *fmt was '\0' (eg in the invocation 'printf %'), the for-loop would miss the terminating null character. MFC after: 1 week --- usr.bin/printf/printf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'usr.bin/printf/printf.c') diff --git a/usr.bin/printf/printf.c b/usr.bin/printf/printf.c index 64206a4..64aa07a 100644 --- a/usr.bin/printf/printf.c +++ b/usr.bin/printf/printf.c @@ -179,7 +179,7 @@ next: for (start = fmt;; ++fmt) { } /* skip to field width */ - for (; strchr(skip1, *fmt); ++fmt); + fmt += strspn(fmt, skip1); if (*fmt == '*') { if (getint(&fieldwidth)) return (1); @@ -189,7 +189,7 @@ next: for (start = fmt;; ++fmt) { havewidth = 0; /* skip to possible '.', get following precision */ - for (; strchr(skip2, *fmt); ++fmt); + fmt += strspn(fmt, skip2); } if (*fmt == '.') { /* precision present? */ @@ -203,7 +203,7 @@ next: for (start = fmt;; ++fmt) { haveprec = 0; /* skip to conversion char */ - for (; strchr(skip2, *fmt); ++fmt); + fmt += strspn(fmt, skip2); } } else haveprec = 0; -- cgit v1.1