summaryrefslogtreecommitdiff
path: root/bfd/versados.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2002-07-30 05:49:24 +0000
committerAlan Modra <amodra@bigpond.net.au>2002-07-30 05:49:24 +0000
commit5755c32983724a2869a789b3a19ac8513a5338a0 (patch)
tree3d15ba12849a291b7f62e8a455a1d02862a392b2 /bfd/versados.c
parent748fdec091d4d1b7829bf085d61bab7c47acf1f7 (diff)
downloadgdb-5755c32983724a2869a789b3a19ac8513a5338a0.tar.gz
* aoutx.h (some_aout_object_p): Clean up tdata properly on error.
* archive.c (bfd_generic_archive_p): Likewise. * coff-rs6000.c (_bfd_xcoff_archive_p): Likewise. (_bfd_xcoff_archive_p): Use bfd_scan_vma in place of strtol. * coff64-rs6000.c (xcoff64_slurp_armap): Likewise. (xcoff64_archive_p): Likewise. (xcoff64_openr_next_archived_file): Likewise. (xcoff64_archive_p): Clean up tdata properly on error. * coffgen.c (coff_real_object_p): Likewise. (coff_object_p): Release filehdr and opthdr. * ecoff.c (_bfd_ecoff_archive_p): Clean up tdata properly on error. * ieee.c (ieee_archive_p): Likewise. * ihex.c (ihex_object_p): Likewise. (ihex_mkobject): Always allocate tdata. * peicode.h (pe_ILF_object_p): Release bfd_alloc'd buffer on error. * srec.c (srec_mkobject): Always allocate tdata. (srec_object_p): Clean up tdata properly on error. (symbolsrec_object_p): Likewise. * versados.c (versados_object_p): Likewise. * vms-misc.c (_bfd_vms_get_record): Use bfd_malloc instead of malloc, and bfd_realloc instead of realloc. (add_new_contents): Use bfd_alloc instead of bfd_malloc for sections. * vms.c (vms_initialize): Always allocate tdata. Use bfd_alloc in place of bfd_malloc, simplifying error freeing. Free hash table too. (vms_object_p): Clean up tdata on error. (vms_mkobject): Don't complain on stderr if vms_initialize fails. (vms_close_and_cleanup): Adjust for bfd_alloc use.
Diffstat (limited to 'bfd/versados.c')
-rw-r--r--bfd/versados.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/bfd/versados.c b/bfd/versados.c
index 297bbe60a4a..684c3dbd2e4 100644
--- a/bfd/versados.c
+++ b/bfd/versados.c
@@ -612,6 +612,7 @@ versados_object_p (abfd)
{
struct ext_vheader ext;
unsigned char len;
+ tdata_type *tdata_save;
if (bfd_seek (abfd, (file_ptr) 0, SEEK_SET) != 0)
return NULL;
@@ -642,9 +643,12 @@ versados_object_p (abfd)
/* OK, looks like a record, build the tdata and read in. */
- if (!versados_mkobject (abfd)
- || !versados_scan (abfd))
- return NULL;
+ tdata_save = abfd->tdata.versados_data;
+ if (!versados_mkobject (abfd) || !versados_scan (abfd))
+ {
+ abfd->tdata.versados_data = tdata_save;
+ return NULL;
+ }
return abfd->xvec;
}