mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
string/stratcliff.c: Replace int with size_t [BZ #21982]
Fix GCC 7 errors when string/stratcliff.c is compiled with -O3: stratcliff.c: In function ‘do_test’: cc1: error: assuming signed overflow does not occur when assuming that (X - c) <= X is always true [-Werror=strict-overflow] [BZ #21982] * string/stratcliff.c (do_test): Declare size, nchars, inner, middle and outer with size_t instead of int. Repleace %d and %Zd with %zu in printf. Update "MAX (0, nchars - 128)" and "MAX (outer, nchars - 64)" to support unsigned outer and nchars. Also exit loop when outer == 0.
This commit is contained in:
parent
2b0b9a1c85
commit
376b40a27a
@ -1,3 +1,12 @@
|
||||
2017-08-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
[BZ #21982]
|
||||
* string/stratcliff.c (do_test): Declare size, nchars, inner,
|
||||
middle and outer with size_t instead of int. Repleace %d and
|
||||
%Zd with %zu in printf. Update "MAX (0, nchars - 128)" and
|
||||
"MAX (outer, nchars - 64)" to support unsigned outer and
|
||||
nchars. Also exit loop when outer == 0.
|
||||
|
||||
2017-08-23 Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
||||
|
||||
* include/fcntl.h (__fcntl_nocancel): Remove definition.
|
||||
|
@ -58,8 +58,8 @@
|
||||
int
|
||||
do_test (void)
|
||||
{
|
||||
int size = sysconf (_SC_PAGESIZE);
|
||||
int nchars = size / sizeof (CHAR);
|
||||
size_t size = sysconf (_SC_PAGESIZE);
|
||||
size_t nchars = size / sizeof (CHAR);
|
||||
CHAR *adr;
|
||||
CHAR *dest;
|
||||
int result = 0;
|
||||
@ -80,7 +80,17 @@ do_test (void)
|
||||
}
|
||||
else
|
||||
{
|
||||
int inner, middle, outer;
|
||||
size_t inner, middle, outer, nchars64, max128;
|
||||
|
||||
if (nchars > 64)
|
||||
nchars64 = nchars - 64;
|
||||
else
|
||||
nchars64 = 0;
|
||||
|
||||
if (nchars > 128)
|
||||
max128 = nchars - 128;
|
||||
else
|
||||
max128 = 0;
|
||||
|
||||
mprotect (adr, size, PROT_NONE);
|
||||
mprotect (adr + 2 * nchars, size, PROT_NONE);
|
||||
@ -93,59 +103,65 @@ do_test (void)
|
||||
MEMSET (adr, L('T'), nchars);
|
||||
|
||||
/* strlen/wcslen test */
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||
for (inner = MAX (outer, nchars64); inner < nchars; ++inner)
|
||||
{
|
||||
adr[inner] = L('\0');
|
||||
|
||||
if (STRLEN (&adr[outer]) != (size_t) (inner - outer))
|
||||
{
|
||||
printf ("%s flunked for outer = %d, inner = %d\n",
|
||||
printf ("%s flunked for outer = %zu, inner = %zu\n",
|
||||
STRINGIFY (STRLEN), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
adr[inner] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* strnlen/wcsnlen test */
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||
for (inner = MAX (outer, nchars64); inner < nchars; ++inner)
|
||||
{
|
||||
adr[inner] = L('\0');
|
||||
|
||||
if (STRNLEN (&adr[outer], inner - outer + 1)
|
||||
!= (size_t) (inner - outer))
|
||||
{
|
||||
printf ("%s flunked for outer = %d, inner = %d\n",
|
||||
printf ("%s flunked for outer = %zu, inner = %zu\n",
|
||||
STRINGIFY (STRNLEN), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
adr[inner] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = MAX (outer, nchars - 64); inner <= nchars; ++inner)
|
||||
for (inner = MAX (outer, nchars64); inner <= nchars; ++inner)
|
||||
{
|
||||
if (STRNLEN (&adr[outer], inner - outer)
|
||||
!= (size_t) (inner - outer))
|
||||
{
|
||||
printf ("%s flunked bounded for outer = %d, inner = %d\n",
|
||||
printf ("%s flunked bounded for outer = %zu, inner = %zu\n",
|
||||
STRINGIFY (STRNLEN), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* strchr/wcschr test */
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||
for (middle = MAX (outer, nchars64); middle < nchars; ++middle)
|
||||
{
|
||||
for (inner = middle; inner < nchars; ++inner)
|
||||
{
|
||||
@ -158,8 +174,8 @@ do_test (void)
|
||||
|| (inner != middle
|
||||
&& (cp - &adr[outer]) != middle - outer))
|
||||
{
|
||||
printf ("%s flunked for outer = %d, middle = %d, "
|
||||
"inner = %d\n",
|
||||
printf ("%s flunked for outer = %zu, middle = %zu, "
|
||||
"inner = %zu\n",
|
||||
STRINGIFY (STRCHR), outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
@ -168,6 +184,8 @@ do_test (void)
|
||||
adr[middle] = L('T');
|
||||
}
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* Special test. */
|
||||
@ -180,9 +198,9 @@ do_test (void)
|
||||
}
|
||||
|
||||
/* strrchr/wcsrchr test */
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||
for (middle = MAX (outer, nchars64); middle < nchars; ++middle)
|
||||
{
|
||||
for (inner = middle; inner < nchars; ++inner)
|
||||
{
|
||||
@ -195,8 +213,8 @@ do_test (void)
|
||||
|| (inner != middle
|
||||
&& (cp - &adr[outer]) != middle - outer))
|
||||
{
|
||||
printf ("%s flunked for outer = %d, middle = %d, "
|
||||
"inner = %d\n",
|
||||
printf ("%s flunked for outer = %zu, middle = %zu, "
|
||||
"inner = %zu\n",
|
||||
STRINGIFY (STRRCHR), outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
@ -205,12 +223,14 @@ do_test (void)
|
||||
adr[middle] = L('T');
|
||||
}
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* memchr test */
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||
for (middle = MAX (outer, nchars64); middle < nchars; ++middle)
|
||||
{
|
||||
adr[middle] = L('V');
|
||||
|
||||
@ -218,32 +238,36 @@ do_test (void)
|
||||
|
||||
if (cp - &adr[outer] != middle - outer)
|
||||
{
|
||||
printf ("%s flunked for outer = %d, middle = %d\n",
|
||||
printf ("%s flunked for outer = %zu, middle = %zu\n",
|
||||
STRINGIFY (MEMCHR), outer, middle);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
adr[middle] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
CHAR *cp = MEMCHR (&adr[outer], L('V'), nchars - outer);
|
||||
|
||||
if (cp != NULL)
|
||||
{
|
||||
printf ("%s flunked for outer = %d\n",
|
||||
printf ("%s flunked for outer = %zu\n",
|
||||
STRINGIFY (MEMCHR), outer);
|
||||
result = 1;
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* These functions only exist for single-byte characters. */
|
||||
#ifndef WCSTEST
|
||||
/* rawmemchr test */
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||
for (middle = MAX (outer, nchars64); middle < nchars; ++middle)
|
||||
{
|
||||
adr[middle] = L('V');
|
||||
|
||||
@ -251,19 +275,21 @@ do_test (void)
|
||||
|
||||
if (cp - &adr[outer] != middle - outer)
|
||||
{
|
||||
printf ("%s flunked for outer = %d, middle = %d\n",
|
||||
printf ("%s flunked for outer = %zu, middle = %zu\n",
|
||||
STRINGIFY (rawmemchr), outer, middle);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
adr[middle] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* memrchr test */
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||
for (middle = MAX (outer, nchars64); middle < nchars; ++middle)
|
||||
{
|
||||
adr[middle] = L('V');
|
||||
|
||||
@ -271,44 +297,50 @@ do_test (void)
|
||||
|
||||
if (cp - &adr[outer] != middle - outer)
|
||||
{
|
||||
printf ("%s flunked for outer = %d, middle = %d\n",
|
||||
printf ("%s flunked for outer = %zu, middle = %zu\n",
|
||||
STRINGIFY (memrchr), outer, middle);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
adr[middle] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
CHAR *cp = memrchr (&adr[outer], L('V'), nchars - outer);
|
||||
|
||||
if (cp != NULL)
|
||||
{
|
||||
printf ("%s flunked for outer = %d\n",
|
||||
printf ("%s flunked for outer = %zu\n",
|
||||
STRINGIFY (memrchr), outer);
|
||||
result = 1;
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* strcpy/wcscpy test */
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||
for (inner = MAX (outer, nchars64); inner < nchars; ++inner)
|
||||
{
|
||||
adr[inner] = L('\0');
|
||||
|
||||
if (STRCPY (dest, &adr[outer]) != dest
|
||||
|| STRLEN (dest) != (size_t) (inner - outer))
|
||||
{
|
||||
printf ("%s flunked for outer = %d, inner = %d\n",
|
||||
printf ("%s flunked for outer = %zu, inner = %zu\n",
|
||||
STRINGIFY (STRCPY), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
adr[inner] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* strcmp/wcscmp tests */
|
||||
@ -322,14 +354,14 @@ do_test (void)
|
||||
|
||||
if (STRCMP (adr + middle, dest + nchars - outer) <= 0)
|
||||
{
|
||||
printf ("%s 1 flunked for outer = %d, middle = %d\n",
|
||||
printf ("%s 1 flunked for outer = %zu, middle = %zu\n",
|
||||
STRINGIFY (STRCMP), outer, middle);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
if (STRCMP (dest + nchars - outer, adr + middle) >= 0)
|
||||
{
|
||||
printf ("%s 2 flunked for outer = %d, middle = %d\n",
|
||||
printf ("%s 2 flunked for outer = %zu, middle = %zu\n",
|
||||
STRINGIFY (STRCMP), outer, middle);
|
||||
result = 1;
|
||||
}
|
||||
@ -348,16 +380,16 @@ do_test (void)
|
||||
{
|
||||
if (STRNCMP (adr + middle, dest + nchars - outer, inner) != 0)
|
||||
{
|
||||
printf ("%s 1 flunked for outer = %d, middle = %d, "
|
||||
"inner = %d\n",
|
||||
printf ("%s 1 flunked for outer = %zu, middle = %zu, "
|
||||
"inner = %zu\n",
|
||||
STRINGIFY (STRNCMP), outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
if (STRNCMP (dest + nchars - outer, adr + middle, inner) != 0)
|
||||
{
|
||||
printf ("%s 2 flunked for outer = %d, middle = %d, "
|
||||
"inner = %d\n",
|
||||
printf ("%s 2 flunked for outer = %zu, middle = %zu, "
|
||||
"inner = %zu\n",
|
||||
STRINGIFY (STRNCMP), outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
@ -365,14 +397,14 @@ do_test (void)
|
||||
|
||||
if (STRNCMP (adr + middle, dest + nchars - outer, outer) >= 0)
|
||||
{
|
||||
printf ("%s 1 flunked for outer = %d, middle = %d, full\n",
|
||||
printf ("%s 1 flunked for outer = %zu, middle = %zu, full\n",
|
||||
STRINGIFY (STRNCMP), outer, middle);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
if (STRNCMP (dest + nchars - outer, adr + middle, outer) <= 0)
|
||||
{
|
||||
printf ("%s 2 flunked for outer = %d, middle = %d, full\n",
|
||||
printf ("%s 2 flunked for outer = %zu, middle = %zu, full\n",
|
||||
STRINGIFY (STRNCMP), outer, middle);
|
||||
result = 1;
|
||||
}
|
||||
@ -380,7 +412,7 @@ do_test (void)
|
||||
|
||||
/* strncpy/wcsncpy tests */
|
||||
adr[nchars - 1] = L('T');
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
size_t len;
|
||||
|
||||
@ -389,17 +421,19 @@ do_test (void)
|
||||
if (STRNCPY (dest, &adr[outer], len) != dest
|
||||
|| MEMCMP (dest, &adr[outer], len) != 0)
|
||||
{
|
||||
printf ("outer %s flunked for outer = %d, len = %Zd\n",
|
||||
printf ("outer %s flunked for outer = %zu, len = %zu\n",
|
||||
STRINGIFY (STRNCPY), outer, len);
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
adr[nchars - 1] = L('\0');
|
||||
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||
for (inner = MAX (outer, nchars64); inner < nchars; ++inner)
|
||||
{
|
||||
size_t len;
|
||||
|
||||
@ -413,8 +447,8 @@ do_test (void)
|
||||
|| (inner - outer < len
|
||||
&& STRLEN (dest) != (inner - outer)))
|
||||
{
|
||||
printf ("%s flunked for outer = %d, inner = %d, "
|
||||
"len = %Zd\n",
|
||||
printf ("%s flunked for outer = %zu, inner = %zu, "
|
||||
"len = %zu\n",
|
||||
STRINGIFY (STRNCPY), outer, inner, len);
|
||||
result = 1;
|
||||
}
|
||||
@ -424,8 +458,8 @@ do_test (void)
|
||||
|| (inner - outer < len
|
||||
&& STRLEN (dest + 1) != (inner - outer)))
|
||||
{
|
||||
printf ("%s+1 flunked for outer = %d, inner = %d, "
|
||||
"len = %Zd\n",
|
||||
printf ("%s+1 flunked for outer = %zu, inner = %zu, "
|
||||
"len = %zu\n",
|
||||
STRINGIFY (STRNCPY), outer, inner, len);
|
||||
result = 1;
|
||||
}
|
||||
@ -433,29 +467,33 @@ do_test (void)
|
||||
|
||||
adr[inner] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* stpcpy/wcpcpy test */
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = MAX (outer, nchars - 64); inner < nchars; ++inner)
|
||||
for (inner = MAX (outer, nchars64); inner < nchars; ++inner)
|
||||
{
|
||||
adr[inner] = L('\0');
|
||||
|
||||
if ((STPCPY (dest, &adr[outer]) - dest) != inner - outer)
|
||||
{
|
||||
printf ("%s flunked for outer = %d, inner = %d\n",
|
||||
printf ("%s flunked for outer = %zu, inner = %zu\n",
|
||||
STRINGIFY (STPCPY), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
|
||||
adr[inner] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* stpncpy/wcpncpy test */
|
||||
adr[nchars - 1] = L('T');
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
size_t len;
|
||||
|
||||
@ -464,17 +502,19 @@ do_test (void)
|
||||
if (STPNCPY (dest, &adr[outer], len) != dest + len
|
||||
|| MEMCMP (dest, &adr[outer], len) != 0)
|
||||
{
|
||||
printf ("outer %s flunked for outer = %d, len = %Zd\n",
|
||||
printf ("outer %s flunked for outer = %zu, len = %zu\n",
|
||||
STRINGIFY (STPNCPY), outer, len);
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
adr[nchars - 1] = L('\0');
|
||||
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (middle = MAX (outer, nchars - 64); middle < nchars; ++middle)
|
||||
for (middle = MAX (outer, nchars64); middle < nchars; ++middle)
|
||||
{
|
||||
adr[middle] = L('\0');
|
||||
|
||||
@ -483,8 +523,8 @@ do_test (void)
|
||||
if ((STPNCPY (dest, &adr[outer], inner) - dest)
|
||||
!= MIN (inner, middle - outer))
|
||||
{
|
||||
printf ("%s flunked for outer = %d, middle = %d, "
|
||||
"inner = %d\n",
|
||||
printf ("%s flunked for outer = %zu, middle = %zu, "
|
||||
"inner = %zu\n",
|
||||
STRINGIFY (STPNCPY), outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
@ -492,66 +532,84 @@ do_test (void)
|
||||
|
||||
adr[middle] = L('T');
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* memcpy/wmemcpy test */
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (inner = 0; inner < nchars - outer; ++inner)
|
||||
if (MEMCPY (dest, &adr[outer], inner) != dest)
|
||||
{
|
||||
printf ("%s flunked for outer = %d, inner = %d\n",
|
||||
STRINGIFY (MEMCPY), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = 0; inner < nchars - outer; ++inner)
|
||||
if (MEMCPY (dest, &adr[outer], inner) != dest)
|
||||
{
|
||||
printf ("%s flunked for outer = %zu, inner = %zu\n",
|
||||
STRINGIFY (MEMCPY), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* mempcpy/wmempcpy test */
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (inner = 0; inner < nchars - outer; ++inner)
|
||||
if (MEMPCPY (dest, &adr[outer], inner) != dest + inner)
|
||||
{
|
||||
printf ("%s flunked for outer = %d, inner = %d\n",
|
||||
STRINGIFY (MEMPCPY), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = 0; inner < nchars - outer; ++inner)
|
||||
if (MEMPCPY (dest, &adr[outer], inner) != dest + inner)
|
||||
{
|
||||
printf ("%s flunked for outer = %zu, inner = %zu\n",
|
||||
STRINGIFY (MEMPCPY), outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
|
||||
/* This function only exists for single-byte characters. */
|
||||
#ifndef WCSTEST
|
||||
/* memccpy test */
|
||||
memset (adr, '\0', nchars);
|
||||
for (outer = nchars; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (inner = 0; inner < nchars - outer; ++inner)
|
||||
if (memccpy (dest, &adr[outer], L('\1'), inner) != NULL)
|
||||
{
|
||||
printf ("memccpy flunked full copy for outer = %d, inner = %d\n",
|
||||
outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
for (outer = nchars - 1; outer >= MAX (0, nchars - 128); --outer)
|
||||
for (middle = 0; middle < nchars - outer; ++middle)
|
||||
{
|
||||
memset (dest, L('\2'), middle + 1);
|
||||
for (inner = 0; inner < middle; ++inner)
|
||||
for (outer = nchars; outer >= max128; --outer)
|
||||
{
|
||||
for (inner = 0; inner < nchars - outer; ++inner)
|
||||
if (memccpy (dest, &adr[outer], L('\1'), inner) != NULL)
|
||||
{
|
||||
adr[outer + inner] = L('\1');
|
||||
|
||||
if (memccpy (dest, &adr[outer], '\1', middle + 128)
|
||||
!= dest + inner + 1)
|
||||
{
|
||||
printf ("\
|
||||
memccpy flunked partial copy for outer = %d, middle = %d, inner = %d\n",
|
||||
outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
else if (dest[inner + 1] != L('\2'))
|
||||
{
|
||||
printf ("\
|
||||
memccpy copied too much for outer = %d, middle = %d, inner = %d\n",
|
||||
outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
adr[outer + inner] = L('\0');
|
||||
printf ("memccpy flunked full copy for outer = %zu, inner = %zu\n",
|
||||
outer, inner);
|
||||
result = 1;
|
||||
}
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
for (outer = nchars - 1; outer >= max128; --outer)
|
||||
{
|
||||
for (middle = 0; middle < nchars - outer; ++middle)
|
||||
{
|
||||
memset (dest, L('\2'), middle + 1);
|
||||
for (inner = 0; inner < middle; ++inner)
|
||||
{
|
||||
adr[outer + inner] = L('\1');
|
||||
|
||||
if (memccpy (dest, &adr[outer], '\1', middle + 128)
|
||||
!= dest + inner + 1)
|
||||
{
|
||||
printf ("\
|
||||
memccpy flunked partial copy for outer = %zu, middle = %zu, inner = %zu\n",
|
||||
outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
else if (dest[inner + 1] != L('\2'))
|
||||
{
|
||||
printf ("\
|
||||
memccpy copied too much for outer = %zu, middle = %zu, inner = %zu\n",
|
||||
outer, middle, inner);
|
||||
result = 1;
|
||||
}
|
||||
adr[outer + inner] = L('\0');
|
||||
}
|
||||
}
|
||||
if (outer == 0)
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user