From 9cc198f65ba914867c8146ab23e0c6adac22a1fb Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sun, 23 Sep 2007 18:27:55 +0000 Subject: [BZ #4963] * wcsmbs/wcsnlen.c: Don't reference before checking the length. * string/stratcliff.c: Make usable to test wide char functions. * wcsmbs/wcsatcliff.c: New file. * wcsmbs/Makefiel (tests): Add wcsatcliff. --- wcsmbs/wcsnlen.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'wcsmbs/wcsnlen.c') diff --git a/wcsmbs/wcsnlen.c b/wcsmbs/wcsnlen.c index 3cfbccad91..94abf1e574 100644 --- a/wcsmbs/wcsnlen.c +++ b/wcsmbs/wcsnlen.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. +/* Copyright (C) 1998, 1999, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 1998. @@ -28,13 +28,16 @@ __wcsnlen (s, maxlen) { size_t len = 0; - while (s[len] != L'\0' && maxlen > 0) + while (maxlen > 0 && s[len] != L'\0') { - if (s[++len] == L'\0' || --maxlen == 0) + ++len; + if (--maxlen == 0 || s[len] == L'\0') return len; - if (s[++len] == L'\0' || --maxlen == 0) + ++len; + if (--maxlen == 0 || s[len] == L'\0') return len; - if (s[++len] == L'\0' || --maxlen == 0) + ++len; + if (--maxlen == 0 || s[len] == L'\0') return len; ++len; --maxlen; -- cgit 1.4.1