diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-09-23 18:27:55 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-09-23 18:27:55 +0000 |
commit | 9cc198f65ba914867c8146ab23e0c6adac22a1fb (patch) | |
tree | f59086bfae619c6ef493f4bf33069492f05ca56e /wcsmbs | |
parent | 27f3d4467d476455a438b825c4edd274fb5b17a8 (diff) | |
download | glibc-9cc198f65ba914867c8146ab23e0c6adac22a1fb.zip glibc-9cc198f65ba914867c8146ab23e0c6adac22a1fb.tar.gz glibc-9cc198f65ba914867c8146ab23e0c6adac22a1fb.tar.bz2 |
[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.
Diffstat (limited to 'wcsmbs')
-rw-r--r-- | wcsmbs/Makefile | 3 | ||||
-rw-r--r-- | wcsmbs/wcsatcliff.c | 20 | ||||
-rw-r--r-- | wcsmbs/wcsnlen.c | 13 |
3 files changed, 30 insertions, 6 deletions
diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile index 4afbc4c..907bb25 100644 --- a/wcsmbs/Makefile +++ b/wcsmbs/Makefile @@ -43,7 +43,8 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \ isoc99_swscanf isoc99_vswscanf tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \ - tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 + tst-wcrtomb tst-wcpncpy tst-mbsrtowcs tst-wchar-h tst-mbrtowc2 \ + wcsatcliff include ../Rules diff --git a/wcsmbs/wcsatcliff.c b/wcsmbs/wcsatcliff.c new file mode 100644 index 0000000..22db607 --- /dev/null +++ b/wcsmbs/wcsatcliff.c @@ -0,0 +1,20 @@ +#include <wchar.h> + +#define WCSTEST 1 +#define L(c) L##c +#define CHAR wchar_t +#define MEMSET wmemset +#define STRLEN wcslen +#define STRNLEN wcsnlen +#define STRCHR wcschr +#define STRRCHR wcsrchr +#define STRCPY wcscpy +#define STRNCPY wcsncpy +#define MEMCMP wmemcmp +#define STPCPY wcpcpy +#define STPNCPY wcpncpy +#define MEMCPY wmemcpy +#define MEMPCPY wmempcpy + + +#include "../string/stratcliff.c" diff --git a/wcsmbs/wcsnlen.c b/wcsmbs/wcsnlen.c index 3cfbcca..94abf1e 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 <drepper@cygnus.com>, 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; |