From bc55a0b89789624f5ed4a64d2b7e463812674776 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 22 Jul 2003 19:23:54 +0000 Subject: (tests): Add tst-wcpncpy. --- wcsmbs/Makefile | 4 ++-- wcsmbs/tst-wcpncpy.c | 31 +++++++++++++++++++++++++++++++ wcsmbs/wcpncpy.c | 10 ++++------ 3 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 wcsmbs/tst-wcpncpy.c diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile index 882084db1e..005c49deee 100644 --- a/wcsmbs/Makefile +++ b/wcsmbs/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1995-2000, 2002 Free Software Foundation, Inc. +# Copyright (C) 1995-2000, 2002, 2003 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -40,7 +40,7 @@ routines := wcscat wcschr wcscmp wcscpy wcscspn wcsdup wcslen wcsncat \ wcsmbsload mbsrtowcs_l tests := tst-wcstof wcsmbs-tst1 tst-wcsnlen tst-btowc tst-mbrtowc \ - tst-wcrtomb + tst-wcrtomb tst-wcpncpy include ../Rules diff --git a/wcsmbs/tst-wcpncpy.c b/wcsmbs/tst-wcpncpy.c new file mode 100644 index 0000000000..ce8ea31bf7 --- /dev/null +++ b/wcsmbs/tst-wcpncpy.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2003 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2003. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + + +int +main (void) +{ + const wchar_t src[] = L"0"; + wchar_t dest[10]; + wmemset (dest, L'\0', 10); + wcpncpy (dest, src, 2); + return wcscmp (dest, src) != 0; +} diff --git a/wcsmbs/wcpncpy.c b/wcsmbs/wcpncpy.c index df7efd7fb0..bd62e62682 100644 --- a/wcsmbs/wcpncpy.c +++ b/wcsmbs/wcpncpy.c @@ -31,8 +31,6 @@ __wcpncpy (dest, src, n) wint_t c; wchar_t *const s = dest; - --dest; - if (n >= 4) { size_t n4 = n >> 2; @@ -40,19 +38,19 @@ __wcpncpy (dest, src, n) for (;;) { c = *src++; - *++dest = c; + *dest++ = c; if (c == L'\0') break; c = *src++; - *++dest = c; + *dest++ = c; if (c == L'\0') break; c = *src++; - *++dest = c; + *dest++ = c; if (c == L'\0') break; c = *src++; - *++dest = c; + *dest++ = c; if (c == L'\0') break; if (--n4 == 0) -- cgit 1.4.1