Update.
authorUlrich Drepper <drepper@redhat.com>
Sat, 3 Nov 2001 09:05:11 +0000 (09:05 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sat, 3 Nov 2001 09:05:11 +0000 (09:05 +0000)
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.

ChangeLog
string/bits/string2.h
string/tester.c

index c798c09..435303a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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>
 
-       * 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.
        * scripts/cpp: New file.
index aafb578..e8ac063 100644 (file)
@@ -1216,7 +1216,7 @@ extern char *__strndup (__const char *__string, size_t __n)
                          size_t __n = (n);                                   \
                          char *__retval;                                     \
                          if (__n < __len)                                    \
-                           __len = __n;                                      \
+                           __len = __n + 1;                                  \
                          __retval = (char *) malloc (__len);                 \
                          if (__retval != NULL)                               \
                            {                                                 \
index bd2445f..39ae0d8 100644 (file)
@@ -1257,6 +1257,30 @@ test_bzero (void)
 }
 
 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
 test_bcmp (void)
 {
   it = "bcmp";
@@ -1382,6 +1406,9 @@ main (void)
   /* bcmp - somewhat like memcmp.  */
   test_bcmp ();
 
+  /* strndup.  */
+  test_strndup ();
+
   /* strerror - VERY system-dependent.  */
   test_strerror ();