* symbols.c (symbol_find_base): Use memcpy instead of strcpy.
authorRichard Henderson <rth@redhat.com>
Thu, 6 May 1999 19:52:29 +0000 (19:52 +0000)
committerRichard Henderson <rth@redhat.com>
Thu, 6 May 1999 19:52:29 +0000 (19:52 +0000)
        Don't copy before downcaseing.

gas/ChangeLog
gas/symbols.c

index 4acef71756156cfaaf1ca359bdbda4b85999a6c0..c5810e361811c90c55b20979039c8fec7715dd56 100644 (file)
@@ -1,3 +1,8 @@
+Thu May  6 19:50:14 1999  Richard Henderson  <rth@cygnus.com>
+
+       * symbols.c (symbol_find_base): Use memcpy instead of strcpy.
+       Don't copy before downcaseing.
+
 1999-05-05  Catherine Moore  <clm@cygnus.com>
  
         * tc-m68k.c: Include elf/m68k.h.
index a1cde6a7de2381a25dd6a494ff434071ca6c434c..8a05e1f8c43b7fa6f1469ece22794d90cfe0416d 100644 (file)
@@ -456,23 +456,30 @@ symbol_find_base (name, strip_underscore)
 #ifdef tc_canonicalize_symbol_name
   {
     char *copy;
+    size_t len = strlen (name) + 1;
 
-    copy = (char *) alloca (strlen (name) + 1);
-    strcpy (copy, name);
+    copy = (char *) alloca (len);
+    memcpy (copy, name, len);
     name = tc_canonicalize_symbol_name (copy);
   }
 #endif
 
   if (! symbols_case_sensitive)
     {
-      unsigned char *copy;
-
-      copy = (unsigned char *) alloca (strlen (name) + 1);
-      strcpy (copy, name);
-      name = (const char *) copy;
-      for (; *copy != '\0'; copy++)
-       if (islower (*copy))
-         *copy = toupper (*copy);
+      char *copy;
+      const char *orig;
+      unsigned char c;
+
+      orig = name;
+      name = copy = (char *) alloca (strlen (name) + 1);
+
+      while ((c = *orig++) != '\0')
+       {
+         if (islower (c))
+           c = toupper (c);
+         *copy++ = c;
+       }
+      *copy = '\0';
     }
 
   return ((symbolS *) hash_find (sy_hash, name));