2001-11-02  Jakub Jelinek  <jakub@redhat.com>

	* string/bits/string2.h (__strndup): If n is smaller than len, set
	len to n + 1.
	* string/tester.c (test_strndup): New function.
	(main): Call it.

	* sunrpc/rpc_main.c: Optimize variable definitions a bit.
This commit is contained in:
Ulrich Drepper 2001-11-03 09:05:11 +00:00
parent 5f73e77144
commit fb4fb5428d
3 changed files with 36 additions and 2 deletions

View File

@ -1,6 +1,13 @@
2001-11-02 Jakub Jelinek <jakub@redhat.com>
* string/bits/string2.h (__strndup): If n is smaller than len, set
len to n + 1.
* string/tester.c (test_strndup): New function.
(main): Call it.
2001-11-01 Ulrich Drepper <drepper@redhat.com> 2001-11-01 Ulrich Drepper <drepper@redhat.com>
* sunrpc/rpc_main.c: Optomize variable definitions a bit. * sunrpc/rpc_main.c: Optimize variable definitions a bit.
* sunrpc/Makefile (rpcgen-cmd): Use ../scripts/cpp in rpcgen calls. * sunrpc/Makefile (rpcgen-cmd): Use ../scripts/cpp in rpcgen calls.
* scripts/cpp: New file. * scripts/cpp: New file.

View File

@ -1216,7 +1216,7 @@ extern char *__strndup (__const char *__string, size_t __n)
size_t __n = (n); \ size_t __n = (n); \
char *__retval; \ char *__retval; \
if (__n < __len) \ if (__n < __len) \
__len = __n; \ __len = __n + 1; \
__retval = (char *) malloc (__len); \ __retval = (char *) malloc (__len); \
if (__retval != NULL) \ if (__retval != NULL) \
{ \ { \

View File

@ -1256,6 +1256,30 @@ test_bzero (void)
equal(one, "abcdef", 4); /* Zero-length copy. */ equal(one, "abcdef", 4); /* Zero-length copy. */
} }
static void
test_strndup (void)
{
char *p, *q;
it = "strndup";
p = strndup("abcdef", 12);
check(p != NULL, 1);
if (p != NULL)
{
equal(p, "abcdef", 2);
q = strndup(p + 1, 2);
check(q != NULL, 3);
if (q != NULL)
equal(q, "bc", 4);
free (q);
}
free (p);
p = strndup("abc def", 3);
check(p != NULL, 5);
if (p != NULL)
equal(p, "abc", 6);
free (p);
}
static void static void
test_bcmp (void) test_bcmp (void)
{ {
@ -1382,6 +1406,9 @@ main (void)
/* bcmp - somewhat like memcmp. */ /* bcmp - somewhat like memcmp. */
test_bcmp (); test_bcmp ();
/* strndup. */
test_strndup ();
/* strerror - VERY system-dependent. */ /* strerror - VERY system-dependent. */
test_strerror (); test_strerror ();