about summary refs log tree commit diff
path: root/string/strncpy.c
diff options
context:
space:
mode:
authorWilco Dijkstra <wdijkstr@arm.com>2014-11-24 15:15:10 +0000
committerWilco Dijkstra <wdijkstr@arm.com>2014-11-24 15:15:10 +0000
commit6423d4754c3769129510b9b44b6b8cfe8192ec67 (patch)
tree2fa198519abedba525fc2f863fc817501f03e8e6 /string/strncpy.c
parentb863d2bc4db728213e54ff502d2c3ae5dfa0db25 (diff)
downloadglibc-6423d4754c3769129510b9b44b6b8cfe8192ec67.tar.gz
glibc-6423d4754c3769129510b9b44b6b8cfe8192ec67.tar.xz
glibc-6423d4754c3769129510b9b44b6b8cfe8192ec67.zip
Improve performance of strncpy.
Diffstat (limited to 'string/strncpy.c')
-rw-r--r--string/strncpy.c14
1 files changed, 5 insertions, 9 deletions
diff --git a/string/strncpy.c b/string/strncpy.c
index 0915e036d6..d5fa5be08f 100644
--- a/string/strncpy.c
+++ b/string/strncpy.c
@@ -57,10 +57,10 @@ STRNCPY (char *s1, const char *s2, size_t n)
 	  if (--n4 == 0)
 	    goto last_chars;
 	}
-      n = n - (s1 - s) - 1;
-      if (n == 0)
-	return s;
-      goto zero_fill;
+      s1++;
+      n = n - (s1 - s);
+      memset (s1, '\0', n);
+      return s;
     }
 
  last_chars:
@@ -77,11 +77,7 @@ STRNCPY (char *s1, const char *s2, size_t n)
     }
   while (c != '\0');
 
- zero_fill:
-  do
-    *++s1 = '\0';
-  while (--n > 0);
-
+  memset (s1 + 1, '\0', n);
   return s;
 }
 libc_hidden_builtin_def (strncpy)