emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] trunk r117931: Fix some slow uses and misuses of strcat.


From: Paul Eggert
Subject: [Emacs-diffs] trunk r117931: Fix some slow uses and misuses of strcat.
Date: Wed, 24 Sep 2014 04:12:45 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117931
revision-id: address@hidden
parent: address@hidden
committer: Paul Eggert <address@hidden>
branch nick: trunk
timestamp: Tue 2014-09-23 21:12:37 -0700
message:
  Fix some slow uses and misuses of strcat.
  
  * doc.c (get_doc_string):
  * gtkutil.c (get_utf8_string):
  * xsmfns.c (x_session_initialize):
  Avoid recomputation of string length.
  * ftfont.c (ftfont_spec_pattern):
  * xfns.c (xic_create_fontsetname):
  Don't assume output buffer is initially zero.
modified:
  src/ChangeLog                  changelog-20091113204419-o5vbwnq5f7feedwu-1438
  src/doc.c                      doc.c-20091113204419-o5vbwnq5f7feedwu-250
  src/ftfont.c                   ftfont.c-20091113204419-o5vbwnq5f7feedwu-8542
  src/gtkutil.c                  gtkutil.c-20091113204419-o5vbwnq5f7feedwu-2527
  src/xfns.c                     xfns.c-20091113204419-o5vbwnq5f7feedwu-274
  src/xsmfns.c                   xsmfns.c-20091113204419-o5vbwnq5f7feedwu-2385
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog     2014-09-23 17:03:48 +0000
+++ b/src/ChangeLog     2014-09-24 04:12:37 +0000
@@ -1,3 +1,14 @@
+2014-09-24  Paul Eggert  <address@hidden>
+
+       Fix some slow uses and misuses of strcat.
+       * doc.c (get_doc_string):
+       * gtkutil.c (get_utf8_string):
+       * xsmfns.c (x_session_initialize):
+       Avoid recomputation of string length.
+       * ftfont.c (ftfont_spec_pattern):
+       * xfns.c (xic_create_fontsetname):
+       Don't assume output buffer is initially zero.
+
 2014-09-23  Paul Eggert  <address@hidden>
 
        * lisp.h (lispstpcpy): Rename from lispstrcpy, and act like stpcpy.

=== modified file 'src/doc.c'
--- a/src/doc.c 2014-09-23 17:03:48 +0000
+++ b/src/doc.c 2014-09-24 04:12:37 +0000
@@ -121,8 +121,8 @@
       if (minsize < 8)
        minsize = 8;
       name = SAFE_ALLOCA (minsize + SCHARS (file) + 8);
-      lispstpcpy (name, docdir);
-      strcat (name, SSDATA (file));
+      char *z = lispstpcpy (name, docdir);
+      strcpy (z, SSDATA (file));
     }
   else
     {

=== modified file 'src/ftfont.c'
--- a/src/ftfont.c      2014-09-07 07:04:01 +0000
+++ b/src/ftfont.c      2014-09-24 04:12:37 +0000
@@ -804,7 +804,7 @@
              *otspec = ftfont_get_open_type_spec (val);
              if (! *otspec)
                return NULL;
-             strcat (otlayout, "otlayout:");
+             strcpy (otlayout, "otlayout:");
              OTF_TAG_STR ((*otspec)->script_tag, otlayout + 9);
              script = (*otspec)->script;
            }

=== modified file 'src/gtkutil.c'
--- a/src/gtkutil.c     2014-09-04 16:14:05 +0000
+++ b/src/gtkutil.c     2014-09-24 04:12:37 +0000
@@ -508,16 +508,16 @@
              && err->code == G_CONVERT_ERROR_ILLEGAL_SEQUENCE)
         {
           memcpy (up, p, bytes_written);
-          sprintf (up + bytes_written, "\\%03o", p[bytes_written]);
-          up += bytes_written+4;
-          p += bytes_written+1;
+          up += bytes_written;
+          up += sprintf (up, "\\%03o", p[bytes_written]);
+          p += bytes_written + 1;
           g_error_free (err);
           err = NULL;
         }
 
       if (cp)
         {
-          strcat (utf8_str, cp);
+          strcpy (up, cp);
           g_free (cp);
         }
       if (err)

=== modified file 'src/xfns.c'
--- a/src/xfns.c        2014-09-23 17:03:48 +0000
+++ b/src/xfns.c        2014-09-24 04:12:37 +0000
@@ -1786,7 +1786,7 @@
          len = p - base_fontname + strlen (allcs) + 1;
          font_allcs = alloca (len);
          memcpy (font_allcs, base_fontname, p - base_fontname);
-         strcat (font_allcs, allcs);
+         strcpy (font_allcs + (p - base_fontname), allcs);
 
          /* Build the font spec that matches all families and
             add-styles.  */
@@ -1794,7 +1794,7 @@
          font_allfamilies = alloca (len);
          strcpy (font_allfamilies, allfamilies);
          memcpy (font_allfamilies + strlen (allfamilies), p1, p - p1);
-         strcat (font_allfamilies, allcs);
+         strcpy (font_allfamilies + strlen (allfamilies) + (p - p1), allcs);
 
          /* Build the font spec that matches all.  */
          len = p - p2 + strlen (allcs) + strlen (all) + strlen (allfamilies) + 
1;
@@ -1802,7 +1802,8 @@
          strcpy (font_all, allfamilies);
          strcat (font_all, all);
          memcpy (font_all + strlen (all) + strlen (allfamilies), p2, p - p2);
-         strcat (font_all, allcs);
+         strcpy (font_all + strlen (all) + strlen (allfamilies) + (p - p2),
+                 allcs);
 
          /* Build the actual font set name.  */
          len = strlen (base_fontname) + strlen (font_allcs)

=== modified file 'src/xsmfns.c'
--- a/src/xsmfns.c      2014-09-23 17:03:48 +0000
+++ b/src/xsmfns.c      2014-09-24 04:12:37 +0000
@@ -415,11 +415,11 @@
   /* This malloc will not be freed, but it is only done once, and hopefully
      not very large   */
   emacs_program = xmalloc (name_len + 1);
-  emacs_program[0] = '\0';
+  char *z = emacs_program;
 
   if (! EQ (Vinvocation_directory, Qnil))
-    lispstpcpy (emacs_program, Vinvocation_directory);
-  strcat (emacs_program, SSDATA (Vinvocation_name));
+    z = lispstpcpy (z, Vinvocation_directory);
+  lispstpcpy (z, Vinvocation_name);
 
   /* The SM protocol says all callbacks are mandatory, so set up all
      here and in the mask passed to SmcOpenConnection.  */


reply via email to

[Prev in Thread] Current Thread [Next in Thread]