aboutsummaryrefslogtreecommitdiff
path: root/bfd/hash.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2013-06-24 14:28:17 +0000
committerNick Clifton <nickc@redhat.com>2013-06-24 14:28:17 +0000
commitcd6d434c14735b0f374bada533793bbad5393e19 (patch)
tree58e591167607f2e5f0779614fb33f4b783b267ce /bfd/hash.c
parent48a938971023f56aea9ecf84ab5493493b3b9875 (diff)
downloadgdb-cd6d434c14735b0f374bada533793bbad5393e19.zip
gdb-cd6d434c14735b0f374bada533793bbad5393e19.tar.gz
gdb-cd6d434c14735b0f374bada533793bbad5393e19.tar.bz2
PR 15657
* hash.c (_bfd_stringtab_add): Copy the string if COPY is true.
Diffstat (limited to 'bfd/hash.c')
-rw-r--r--bfd/hash.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/bfd/hash.c b/bfd/hash.c
index f2dce4c..82e711a 100644
--- a/bfd/hash.c
+++ b/bfd/hash.c
@@ -808,7 +808,8 @@ _bfd_stringtab_free (struct bfd_strtab_hash *table)
/* Get the index of a string in a strtab, adding it if it is not
already present. If HASH is FALSE, we don't really use the hash
- table, and we don't eliminate duplicate strings. */
+ table, and we don't eliminate duplicate strings. If COPY is true
+ then store a copy of STR if creating a new entry. */
bfd_size_type
_bfd_stringtab_add (struct bfd_strtab_hash *tab,
@@ -834,11 +835,13 @@ _bfd_stringtab_add (struct bfd_strtab_hash *tab,
entry->root.string = str;
else
{
+ size_t len = strlen (str) + 1;
char *n;
- n = (char *) bfd_hash_allocate (&tab->table, strlen (str) + 1);
+ n = (char *) bfd_hash_allocate (&tab->table, len);
if (n == NULL)
return (bfd_size_type) -1;
+ memcpy (n, str, len);
entry->root.string = n;
}
entry->index = (bfd_size_type) -1;