Fix use of restrict in wchar.h

This commit is contained in:
Andreas Schwab 2010-12-10 09:15:01 -05:00 committed by Ulrich Drepper
parent eaea92f137
commit 4f1972374a
3 changed files with 36 additions and 22 deletions

View File

@ -1,3 +1,11 @@
2010-12-10 Andreas Schwab <schwab@redhat.com>
* wcsmbs/wchar.h (wcpcpy, wcpncpy): Add __restrict.
* wcsmbs/bits/wchar2.h (__wmemmove_chk_warn, wmemmove, wmemset):
Remove __restrict.
(wcscpy, __wcpcpy_chk, __wcpcpy_alias, wcpcpy, wcsncpy, wcpncpy)
(wcscat, wcsncat, __wcrtomb_chk, wcrtomb): Add __restrict.
2010-12-09 Ulrich Drepper <drepper@gmail.com>
[BZ #11655]

View File

@ -1,5 +1,5 @@
/* Checking macros for wchar functions.
Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
Copyright (C) 2005, 2006, 2007, 2010 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
@ -60,15 +60,13 @@ extern wchar_t *__REDIRECT_NTH (__wmemmove_alias, (wchar_t *__s1,
__const wchar_t *__s2,
size_t __n), wmemmove);
extern wchar_t *__REDIRECT_NTH (__wmemmove_chk_warn,
(wchar_t *__restrict __s1,
__const wchar_t *__restrict __s2, size_t __n,
size_t __ns1), __wmemmove_chk)
(wchar_t *__s1, __const wchar_t *__s2,
size_t __n, size_t __ns1), __wmemmove_chk)
__warnattr ("wmemmove called with length bigger than size of destination "
"buffer");
__extern_always_inline wchar_t *
__NTH (wmemmove (wchar_t *__restrict __s1, __const wchar_t *__restrict __s2,
size_t __n))
__NTH (wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n))
{
if (__bos0 (__s1) != (size_t) -1)
{
@ -129,7 +127,7 @@ extern wchar_t *__REDIRECT_NTH (__wmemset_chk_warn,
"buffer");
__extern_always_inline wchar_t *
__NTH (wmemset (wchar_t *__restrict __s, wchar_t __c, size_t __n))
__NTH (wmemset (wchar_t *__s, wchar_t __c, size_t __n))
{
if (__bos0 (__s) != (size_t) -1)
{
@ -152,7 +150,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscpy_alias,
__const wchar_t *__restrict __src), wcscpy);
__extern_always_inline wchar_t *
__NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src))
__NTH (wcscpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src))
{
if (__bos (__dest) != (size_t) -1)
return __wcscpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
@ -160,14 +158,15 @@ __NTH (wcscpy (wchar_t *__dest, __const wchar_t *__src))
}
extern wchar_t *__wcpcpy_chk (wchar_t *__dest, __const wchar_t *__src,
extern wchar_t *__wcpcpy_chk (wchar_t *__restrict __dest,
__const wchar_t *__restrict __src,
size_t __destlen) __THROW;
extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias, (wchar_t *__dest,
__const wchar_t *__src),
wcpcpy);
extern wchar_t *__REDIRECT_NTH (__wcpcpy_alias,
(wchar_t *__restrict __dest,
__const wchar_t *__restrict __src), wcpcpy);
__extern_always_inline wchar_t *
__NTH (wcpcpy (wchar_t *__dest, __const wchar_t *__src))
__NTH (wcpcpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src))
{
if (__bos (__dest) != (size_t) -1)
return __wcpcpy_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
@ -190,7 +189,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsncpy_chk_warn,
"buffer");
__extern_always_inline wchar_t *
__NTH (wcsncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n))
__NTH (wcsncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src,
size_t __n))
{
if (__bos (__dest) != (size_t) -1)
{
@ -220,7 +220,8 @@ extern wchar_t *__REDIRECT_NTH (__wcpncpy_chk_warn,
"buffer");
__extern_always_inline wchar_t *
__NTH (wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n))
__NTH (wcpncpy (wchar_t *__restrict __dest, __const wchar_t *__restrict __src,
size_t __n))
{
if (__bos (__dest) != (size_t) -1)
{
@ -243,7 +244,7 @@ extern wchar_t *__REDIRECT_NTH (__wcscat_alias,
__const wchar_t *__restrict __src), wcscat);
__extern_always_inline wchar_t *
__NTH (wcscat (wchar_t *__dest, __const wchar_t *__src))
__NTH (wcscat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src))
{
if (__bos (__dest) != (size_t) -1)
return __wcscat_chk (__dest, __src, __bos (__dest) / sizeof (wchar_t));
@ -260,7 +261,8 @@ extern wchar_t *__REDIRECT_NTH (__wcsncat_alias,
size_t __n), wcsncat);
__extern_always_inline wchar_t *
__NTH (wcsncat (wchar_t *__dest, __const wchar_t *__src, size_t __n))
__NTH (wcsncat (wchar_t *__restrict __dest, __const wchar_t *__restrict __src,
size_t __n))
{
if (__bos (__dest) != (size_t) -1)
return __wcsncat_chk (__dest, __src, __n,
@ -428,14 +430,16 @@ fgetws_unlocked (wchar_t *__restrict __s, int __n, __FILE *__restrict __stream)
#endif
extern size_t __wcrtomb_chk (char *__s, wchar_t __wchar, mbstate_t *__p,
size_t __buflen) __THROW __wur;
extern size_t __wcrtomb_chk (char *__restrict __s, wchar_t __wchar,
mbstate_t *__restrict __p,
size_t __buflen) __THROW __wur;
extern size_t __REDIRECT_NTH (__wcrtomb_alias,
(char *__restrict __s, wchar_t __wchar,
mbstate_t *__restrict __ps), wcrtomb) __wur;
__extern_always_inline __wur size_t
__NTH (wcrtomb (char *__s, wchar_t __wchar, mbstate_t *__ps))
__NTH (wcrtomb (char *__restrict __s, wchar_t __wchar,
mbstate_t *__restrict __ps))
{
/* We would have to include <limits.h> to get a definition of MB_LEN_MAX.
But this would only disturb the namespace. So we define our own

View File

@ -561,11 +561,13 @@ extern long double wcstold_l (__const wchar_t *__restrict __nptr,
#ifdef __USE_XOPEN2K8
/* Copy SRC to DEST, returning the address of the terminating L'\0' in
DEST. */
extern wchar_t *wcpcpy (wchar_t *__dest, __const wchar_t *__src) __THROW;
extern wchar_t *wcpcpy (wchar_t *__restrict __dest,
__const wchar_t *__restrict __src) __THROW;
/* Copy no more than N characters of SRC to DEST, returning the address of
the last character written into DEST. */
extern wchar_t *wcpncpy (wchar_t *__dest, __const wchar_t *__src, size_t __n)
extern wchar_t *wcpncpy (wchar_t *__restrict __dest,
__const wchar_t *__restrict __src, size_t __n)
__THROW;
#endif /* use GNU */