summaryrefslogtreecommitdiff
path: root/bfd/stabs.c
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2008-02-20 17:42:36 +0000
committerNick Clifton <nickc@redhat.com>2008-02-20 17:42:36 +0000
commit96d3cffec0d9bcc2324384d27413aee3eb37317b (patch)
treed1a5bcecf4b4c4251118947034c20157f7bb2946 /bfd/stabs.c
parent0190eb9e40e11e9f4bf91e203f3af961babf2635 (diff)
downloadbinutils-redhat-96d3cffec0d9bcc2324384d27413aee3eb37317b.tar.gz
PR 868
* libbfd.c (bfd_realloc_or_free): New function. Performs like bfd_realloc, but if the (re)allocation fails, the pointer is freed. * libbfd-in.h: Prototype. * libbfd.h: Regenerate. * bfdio.c (bfd_bwrite): Use the new function. (bfd_seek): Likewise. * bfdwin.c:(bfd_get_file_window): Likewise. * elf-strtab.c (_bfd_elf_strtab_add): Likewise. * elf32-ppc.c (ppc_elf_relax_section): Likewise. * elf32-xtensa.c (vsprintf_msg): Likewise. * mach-o.c (bfd_mach_o_core_fetch_environment): Likewise. * stabs.c (_bfd_link_seciton_stabs): Likewise. * vms-misc.c (_bfd_vms_get_record): Likewise. * vms-tir.c (check_section): Likewise. * vms.c (vms_new_section_hook): Likewise. * elf32-arm.c (elf32_arm_section_map_add): Check that the allocation of sec_data->map succeeded before using it. * elflink.c (elf_link_output_sym): Do not overwrite finfo-> symshndxbuf until it is known that the reallocation succeeded.
Diffstat (limited to 'bfd/stabs.c')
-rw-r--r--bfd/stabs.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/bfd/stabs.c b/bfd/stabs.c
index a9fe409f1e..72e312cc52 100644
--- a/bfd/stabs.c
+++ b/bfd/stabs.c
@@ -337,7 +337,7 @@ _bfd_link_section_stabs (bfd *abfd,
if (num_chars >= buf_len)
{
buf_len += 32 * 1024;
- symb = bfd_realloc (symb, buf_len);
+ symb = bfd_realloc_or_free (symb, buf_len);
if (symb == NULL)
goto error_return;
symb_rover = symb + num_chars;
@@ -393,7 +393,7 @@ _bfd_link_section_stabs (bfd *abfd,
goto error_return;
t->sum_chars = sum_chars;
t->num_chars = num_chars;
- t->symb = bfd_realloc (symb, num_chars); /* Trim data down. */
+ t->symb = symb = bfd_realloc_or_free (symb, num_chars); /* Trim data down. */
t->next = incl_entry->totals;
incl_entry->totals = t;
}