| Index: bfd/hash.c
|
| diff --git a/bfd/hash.c b/bfd/hash.c
|
| index f2dce4cd18df2a5869239789b6dbaa636ebb4905..82e711aff5bacc1b4d3b860aa9a7efc61c8da351 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;
|
|
|