This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.20-395-g3eb3879


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  3eb38795dbbbd8160012050de4dfef200a21f2bf (commit)
      from  0d4ba8be9cd4cebcc2418c72c22a12fc9baf2c85 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3eb38795dbbbd8160012050de4dfef200a21f2bf

commit 3eb38795dbbbd8160012050de4dfef200a21f2bf
Author: OndÅ?ej Bílka <neleai@seznam.cz>
Date:   Fri Dec 19 23:09:40 2014 +0100

     Simplify strncat.
    
    We rewrite strncat to use strnlen and malloc calls which simplifies code
    an is faster as these functions are better optimized than original code.

diff --git a/ChangeLog b/ChangeLog
index 3cef094..4c8bcb4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-19  OndÅ?ej Bílka  <neleai@seznam.cz>
+
+	* string/strncat.c (STRNCAT): Simplify implementation.
+
 2014-12-19  David S. Miller  <davem@davemloft.net>
 
 	* sysdeps/sparc/sparc32/soft-fp/q_neg.c (_Q_neg): Use a union to
diff --git a/string/strncat.c b/string/strncat.c
index 6d29114..0de9a01 100644
--- a/string/strncat.c
+++ b/string/strncat.c
@@ -17,10 +17,6 @@
 
 #include <string.h>
 
-#ifdef _LIBC
-# include <memcopy.h>
-#endif
-
 #ifndef STRNCAT
 # undef strncat
 # define STRNCAT  strncat
@@ -29,52 +25,15 @@
 char *
 STRNCAT (char *s1, const char *s2, size_t n)
 {
-  char c;
   char *s = s1;
 
   /* Find the end of S1.  */
   s1 += strlen (s1);
 
-  /* Make S1 point before next character, so we can increment
-     it while memory is read (wins on pipelined cpus).  */
-  s1 -= 1;
-
-  if (n >= 4)
-    {
-      size_t n4 = n >> 2;
-      do
-	{
-	  c = *s2++;
-	  *++s1 = c;
-	  if (c == '\0')
-	    return s;
-	  c = *s2++;
-	  *++s1 = c;
-	  if (c == '\0')
-	    return s;
-	  c = *s2++;
-	  *++s1 = c;
-	  if (c == '\0')
-	    return s;
-	  c = *s2++;
-	  *++s1 = c;
-	  if (c == '\0')
-	    return s;
-	} while (--n4 > 0);
-      n &= 3;
-    }
-
-  while (n > 0)
-    {
-      c = *s2++;
-      *++s1 = c;
-      if (c == '\0')
-	return s;
-      n--;
-    }
+  size_t ss = __strnlen (s2, n);
 
-  if (c != '\0')
-    *++s1 = '\0';
+  s1[ss] = '\0';
+  memcpy (s1, s2, ss);
 
   return s;
 }

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog        |    4 ++++
 string/strncat.c |   47 +++--------------------------------------------
 2 files changed, 7 insertions(+), 44 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]