diff options
author | Richard Henderson <rth@redhat.com> | 1999-05-06 19:52:29 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 1999-05-06 19:52:29 +0000 |
commit | 03987ceda10cf6d46476f5bd53be660c018e7d12 (patch) | |
tree | 775e995e0bf583aeef4360576fe2fd376253ea18 | |
parent | 7fafc0fd27df38ac432f5a06a4d477699a9c94ed (diff) | |
download | gdb-03987ceda10cf6d46476f5bd53be660c018e7d12.zip gdb-03987ceda10cf6d46476f5bd53be660c018e7d12.tar.gz gdb-03987ceda10cf6d46476f5bd53be660c018e7d12.tar.bz2 |
* symbols.c (symbol_find_base): Use memcpy instead of strcpy.
Don't copy before downcaseing.
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/symbols.c | 27 |
2 files changed, 22 insertions, 10 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 4acef71..c5810e3 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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. diff --git a/gas/symbols.c b/gas/symbols.c index a1cde6a..8a05e1f 100644 --- a/gas/symbols.c +++ b/gas/symbols.c @@ -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)); |