1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-07 06:43:00 +03:00
* string/bits/string2.h (strspn): Evaluate first argument if
	second is "".
	(strpbrk): Likewise.
	* sysdeps/i386/i486/bits/string.h: Likewise.
	* string/Makefile (tests): Add bug-strspn1 and bug-strpbrk1.
	* string/bug-strspn1.c: New file.
	* string/bug-strpbrk1.c: New file.
	Test cases by Joseph S. Myers <jsm28@cam.ac.uk>.

	* string/bits/string2.h (strncat): Terminate string correctly.
	* sysdeps/i386/i486/bits/string.h (strncat): Likewise.
	* string/Makefile (tests): Add bug-strncat1.
	* string/bug-strncat1.c: New file.
	Test case by Joseph S. Myers <jsm28@cam.ac.uk>.

2000-10-27  Ben Collins  <bcollins@debian.org>

	* sysdeps/generic/lockf.c (lockf): Set l_type to F_RDLCK before
	calling for F_GETLK.

2000-10-29  Ulrich Drepper  <drepper@redhat.com>
This commit is contained in:
Ulrich Drepper
2000-10-30 04:08:58 +00:00
parent f58580396d
commit 9c3b1ceba8
8 changed files with 101 additions and 9 deletions

View File

@@ -46,7 +46,8 @@ routines := strcat strchr strcmp strcoll strcpy strcspn \
o-objects.ob := memcpy.o memset.o memchr.o
tests := tester inl-tester noinl-tester testcopy test-ffs \
tst-strlen stratcliff tst-svc tst-inlcall
tst-strlen stratcliff tst-svc tst-inlcall \
bug-strncat1 bug-strspn1 bug-strpbrk1
distribute := memcopy.h pagecopy.h tst-svc.expect

View File

@@ -727,7 +727,8 @@ __stpcpy_small (char *__dest,
__builtin_constant_p (src) && __builtin_constant_p (n) \
? (strlen (src) < ((size_t) (n)) \
? strcat (__dest, src) \
: (memcpy (strchr (__dest, '\0'), src, n), __dest)) \
: (*((char *) __mempcpy (strchr (__dest, '\0'), \
src, n)) = '\0', __dest)) \
: strncat (dest, src, n); }))
# else
# define strncat(dest, src, n) \
@@ -914,7 +915,7 @@ __strcspn_c3 (__const char *__s, char __reject1, char __reject2,
({ char __a0, __a1, __a2; \
(__builtin_constant_p (accept) && __string2_1bptr_p (accept) \
? ((__a0 = ((__const char *) (accept))[0], __a0 == '\0') \
? 0 \
? ((void) (s), 0) \
: ((__a1 = ((__const char *) (accept))[1], __a1 == '\0') \
? __strspn_c1 (s, __a0) \
: ((__a2 = ((__const char *) (accept))[2], __a2 == '\0') \
@@ -969,7 +970,7 @@ __strspn_c3 (__const char *__s, char __accept1, char __accept2, char __accept3)
({ char __a0, __a1, __a2; \
(__builtin_constant_p (accept) && __string2_1bptr_p (accept) \
? ((__a0 = ((__const char *) (accept))[0], __a0 == '\0') \
? NULL \
? ((void) (s), NULL) \
: ((__a1 = ((__const char *) (accept))[1], __a1 == '\0') \
? strchr (s, __a0) \
: ((__a2 = ((__const char *) (accept))[2], __a2 == '\0') \

30
string/bug-strncat1.c Normal file
View File

@@ -0,0 +1,30 @@
/* Test case by Joseph S. Myers <jsm28@cam.ac.uk>. */
#define __USE_STRING_INLINES
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char d[3] = "\0\1\2";
int
main (void)
{
strncat (d, "\5\6", 1);
if (d[0] != '\5')
{
puts ("d[0] != '\\5'");
exit (1);
}
if (d[1] != '\0')
{
puts ("d[1] != '\\0'");
exit (1);
}
if (d[2] != '\2')
{
puts ("d[2] != '\\3'");
exit (1);
}
exit (0);
}

18
string/bug-strpbrk1.c Normal file
View File

@@ -0,0 +1,18 @@
/* Test case by Joseph S. Myers <jsm28@cam.ac.uk>. */
#define __USE_STRING_INLINES
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int
main (void)
{
const char *a = "abc";
const char *b = a;
strpbrk (b++, "");
if (b != a + 1)
exit (1);
exit (0);
}

18
string/bug-strspn1.c Normal file
View File

@@ -0,0 +1,18 @@
/* Test case by Joseph S. Myers <jsm28@cam.ac.uk>. */
#define __USE_STRING_INLINES
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
int
main (void)
{
const char *a = "abc";
const char *b = a;
strspn (b++, "");
if (b != a + 1)
exit (1);
exit (0);
}