summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2005-10-10 01:03:59 +0000
committerJoel Brobecker <brobecker@gnat.com>2005-10-10 01:03:59 +0000
commitde3bb3f1acf992f53c351225d5d704eb43575414 (patch)
tree96e59b23fc85255b4067b74eb9f70631de936ece
parent95f88645919bdbaab26d8aec00c7a1ca84a8399a (diff)
downloadgdb-de3bb3f1acf992f53c351225d5d704eb43575414.tar.gz
* valprint.c (val_print_array_elements): Check array size before
computing its low bound. If zero, then use a default bound of zero.
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/valprint.c16
2 files changed, 14 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 2cfa2b59540..c0f89fd8107 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2005-10-05 Joel Brobecker <brobecker@adacore.com>
+
+ * valprint.c (val_print_array_elements): Check array size before
+ computing its low bound. If zero, then use a default bound of zero.
+
2005-10-06 Alan Modra <amodra@bigpond.net.au>
PR 1659
diff --git a/gdb/valprint.c b/gdb/valprint.c
index 60149acaedf..3183a8db545 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -959,19 +959,21 @@ val_print_array_elements (struct type *type, const gdb_byte *valaddr,
unsigned int rep1;
/* Number of repetitions we have detected so far. */
unsigned int reps;
- long low_bound_index;
-
- if (!get_array_low_bound (type, &low_bound_index))
- {
- warning ("unable to get low bound of array, using zero as default");
- low_bound_index = 0;
- }
+ long low_bound_index = 0;
elttype = TYPE_TARGET_TYPE (type);
eltlen = TYPE_LENGTH (check_typedef (elttype));
len = TYPE_LENGTH (type) / eltlen;
index_type = TYPE_INDEX_TYPE (type);
+ /* Get the array low bound. This only makes sense if the array
+ has one or more element in it. */
+ if (len > 0 && !get_array_low_bound (type, &low_bound_index))
+ {
+ warning ("unable to get low bound of array, using zero as default");
+ low_bound_index = 0;
+ }
+
annotate_array_section_begin (i, elttype);
for (; i < len && things_printed < print_max; i++)