From 7a1ace6a0f5732a0c82594326c075b3d08474bfc Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Wed, 26 Oct 2005 04:29:53 +0000 Subject: * cache.c (bfd_open_file): Set bfd_error_system_call on failure to open file. (bfd_cache_lookup_worker): Remove check that file pos is in unsigned long range. Print system error before aborting. --- bfd/cache.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'bfd/cache.c') diff --git a/bfd/cache.c b/bfd/cache.c index e2524fbf15..e9f38ab6b4 100644 --- a/bfd/cache.c +++ b/bfd/cache.c @@ -447,7 +447,9 @@ bfd_open_file (bfd *abfd) break; } - if (abfd->iostream != NULL) + if (abfd->iostream == NULL) + bfd_set_error (bfd_error_system_call); + else { if (! bfd_cache_init (abfd)) return NULL; @@ -489,14 +491,17 @@ bfd_cache_lookup_worker (bfd *abfd) snip (abfd); insert (abfd); } + return (FILE *) abfd->iostream; } + + if (bfd_open_file (abfd) == NULL) + ; + else if (real_fseek ((FILE *) abfd->iostream, abfd->where, SEEK_SET) != 0) + bfd_set_error (bfd_error_system_call); else - { - if (bfd_open_file (abfd) == NULL - || abfd->where != (unsigned long) abfd->where - || real_fseek ((FILE *) abfd->iostream, abfd->where, SEEK_SET) != 0) - abort (); - } + return (FILE *) abfd->iostream; - return (FILE *) abfd->iostream; + bfd_perror ("Cannot continue"); + abort (); + return NULL; } -- cgit v1.2.1