aboutsummaryrefslogtreecommitdiff
path: root/bfd/mmo.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-08-17 16:12:26 +0930
committerAlan Modra <amodra@gmail.com>2022-08-17 16:35:57 +0930
commit31e43bfffbc585a59d07f21f191317a714476e38 (patch)
treefe86c9d22257e6459e38e7701e86358cafe244e0 /bfd/mmo.c
parent7a1bc25b9d2c3f066000d07b5254d20367b6da0f (diff)
downloadgdb-31e43bfffbc585a59d07f21f191317a714476e38.zip
gdb-31e43bfffbc585a59d07f21f191317a714476e38.tar.gz
gdb-31e43bfffbc585a59d07f21f191317a714476e38.tar.bz2
timeout in mmo_get_symbols
Fix mmo_get_byte to return a fail-safe value, not just on the first call with a read error but on subsequent calls too. * mmo.c (mmo_get_byte): Return the fail-safe value on every call after a read error.
Diffstat (limited to 'bfd/mmo.c')
-rw-r--r--bfd/mmo.c13
1 files changed, 6 insertions, 7 deletions
diff --git a/bfd/mmo.c b/bfd/mmo.c
index 30af28c..80b5cb6 100644
--- a/bfd/mmo.c
+++ b/bfd/mmo.c
@@ -1180,15 +1180,14 @@ mmo_get_byte (bfd *abfd)
if (abfd->tdata.mmo_data->byte_no == 0)
{
- if (! abfd->tdata.mmo_data->have_error
+ if (!abfd->tdata.mmo_data->have_error
&& bfd_bread (abfd->tdata.mmo_data->buf, 4, abfd) != 4)
- {
- abfd->tdata.mmo_data->have_error = true;
+ abfd->tdata.mmo_data->have_error = true;
- /* A value somewhat safe against tripping on some inconsistency
- when mopping up after this error. */
- return 128;
- }
+ /* A value somewhat safe against tripping on some inconsistency
+ when mopping up after this error. */
+ if (abfd->tdata.mmo_data->have_error)
+ return 128;
}
retval = abfd->tdata.mmo_data->buf[abfd->tdata.mmo_data->byte_no];