From: John Gilmore Date: Fri, 25 Oct 1991 09:03:36 +0000 (+0000) Subject: (value_fetch_lazy): Avoid 0-length fetches. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=9cb602e111d316e5c1f857fbd2f33f5dfbc275b3;p=binutils-gdb.git (value_fetch_lazy): Avoid 0-length fetches. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index f7ad1dda787..f999d4e2214 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +Fri Oct 25 02:02:13 1991 John Gilmore (gnu at cygnus.com) + + * valops.c (value_fetch_lazy): Avoid 0-length fetches. + Thu Oct 24 23:06:40 1991 Fred Fish (fnf at cygnus.com) * dwarfread.c: Add casts to remove compiler warnings. diff --git a/gdb/valops.c b/gdb/valops.c index 614317f5370..07c96af55b9 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -163,6 +163,9 @@ value_at_lazy (type, addr) data from the user's process, and clears the lazy flag to indicate that the data in the buffer is valid. + If the value is zero-length, we avoid calling read_memory, which would + abort. We mark the value as fetched anyway -- all 0 bytes of it. + This function returns a value because it is used in the VALUE_CONTENTS macro as part of an expression, where a void would not work. The value is ignored. */ @@ -173,8 +176,9 @@ value_fetch_lazy (val) { CORE_ADDR addr = VALUE_ADDRESS (val) + VALUE_OFFSET (val); - read_memory (addr, VALUE_CONTENTS_RAW (val), - TYPE_LENGTH (VALUE_TYPE (val))); + if (TYPE_LENGTH (VALUE_TYPE (val))) + read_memory (addr, VALUE_CONTENTS_RAW (val), + TYPE_LENGTH (VALUE_TYPE (val))); VALUE_LAZY (val) = 0; return 0; }