]> sourceware.org Git - newlib-cygwin.git/commitdiff
2006-02-13 Jeff Johnston <jjohnstn@redhat.com>
authorJeff Johnston <jjohnstn@redhat.com>
Mon, 13 Feb 2006 17:27:50 +0000 (17:27 +0000)
committerJeff Johnston <jjohnstn@redhat.com>
Mon, 13 Feb 2006 17:27:50 +0000 (17:27 +0000)
            David Carne  <davidcarne@gmail.com>

        * libc/string/strndup_r.c (_strndup_r): Use strnlen logic
        instead of strlen to determine number of bytes to copy.
        * libc/string/strnlen.c (strnlen): Fix so check for max limit occurs
        before looking at storage location.

newlib/ChangeLog
newlib/libc/string/strndup_r.c
newlib/libc/string/strnlen.c

index 8f00398138ad663471acccff46ffaec980946116..eb817653f473b00400b40d922dd73928fd7da607 100644 (file)
@@ -1,3 +1,11 @@
+2006-02-13  Jeff Johnston  <jjohnstn@redhat.com>
+           David Carne  <davidcarne@gmail.com>
+
+       * libc/string/strndup_r.c (_strndup_r): Use strnlen logic
+       instead of strlen to determine number of bytes to copy.
+       * libc/string/strnlen.c (strnlen): Fix so check for max limit occurs
+       before looking at storage location.
+
 2006-02-07  Paul Brook  <paul@codesourcery.com>
 
        * libc/machine/arm/setjmp.S: Add Thumb-2 support.
index 86d9eec44019fa9d2b5ef2bb715bf754895fb61a..2acf63decd585c825f7e1956a9ac19fa5901a6d6 100644 (file)
@@ -2,16 +2,22 @@
 #include <stdlib.h>
 #include <string.h>
 
-#define MIN(a,b) ((a) < (b) ? (a) : (b))
-
 char *
 _DEFUN (_strndup_r, (reent_ptr, str, n), 
         struct _reent *reent_ptr  _AND
         _CONST char   *str _AND
         size_t n)
 {
-  size_t len = MIN(strlen (str), n);
-  char *copy = _malloc_r (reent_ptr, len + 1);
+  _CONST char *ptr = str;
+  size_t len;
+  char *copy;
+
+  while (n-- > 0 && *ptr)
+    ptr++;
+
+  len = ptr - str;
+
+  copy = _malloc_r (reent_ptr, len + 1);
   if (copy)
     {
       memcpy (copy, str, len);
index 92826eeb26f12f5fb3dfa283f929ca7515f4169c..ed60e9371908ff3c8a6d531d0e3325e9480b62cb 100644 (file)
@@ -42,7 +42,7 @@ _DEFUN (strnlen, (str, n),
 {
   _CONST char *start = str;
 
-  while (*str && n-- > 0)
+  while (n-- > 0 && *str)
     str++;
 
   return str - start;
This page took 0.04761 seconds and 5 git commands to generate.