aboutsummaryrefslogtreecommitdiff
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
parentb863d2bc4db728213e54ff502d2c3ae5dfa0db25 (diff)
downloadglibc-6423d4754c3769129510b9b44b6b8cfe8192ec67.zip
glibc-6423d4754c3769129510b9b44b6b8cfe8192ec67.tar.gz
glibc-6423d4754c3769129510b9b44b6b8cfe8192ec67.tar.bz2
Improve performance of strncpy.
-rw-r--r--ChangeLog6
-rw-r--r--string/strncpy.c14
2 files changed, 10 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e45a58..4e557a7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,8 @@
-2014-09-23 Wilco Dijkstra <wdijkstr@arm.com>
+2014-11-24 Wilco Dijkstra <wdijkstr@arm.com>
+
+ * string/strncpy.c (strncpy): Improve performance by using memset.
+
+2014-11-24 Wilco Dijkstra <wdijkstr@arm.com>
* string/strcpy.c (strcpy):
Improve performance by using strlen and memcpy.
diff --git a/string/strncpy.c b/string/strncpy.c
index 0915e03..d5fa5be 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)