isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit 3eea668052db201fe3d0453324a6b909e3568d38
parent 357dd5140558a044fe52a2d3ff7abb1153f9968a
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Thu, 29 Dec 2016 15:08:26 +0100

make use of memchr() in strnlen() replacement after all

turns out the comment advising against it was bogus - unlike for
memcmp(), the standard does indeed prescribe that the memchr()
implementation may not read past the first occurrence of the searched
char.

Diffstat:
Msrc/util.c | 7++-----
1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/util.c b/src/util.c @@ -225,11 +225,8 @@ memrchr( const void *s, int c, size_t n ) size_t strnlen( const char *str, size_t maxlen ) { - size_t len; - - /* It's tempting to use memchr(), but it's allowed to read past the end of the actual string. */ - for (len = 0; len < maxlen && str[len]; len++) {} - return len; + const char *estr = memchr( str, 0, maxlen ); + return estr ? (size_t)(estr - str) : maxlen; } #endif