aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/valprint.c12
2 files changed, 16 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 719582b..221868b 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2010-11-03 Joel Brobecker <brobecker@adacore.com>
+
+ * valprint.c (val_print_array_elements): Put back handling of
+ empty arrays.
+
2010-11-03 Ken Werner <ken.werner@de.ibm.com>
* dwarf2read.c (read_array_type): Read the DW_AT_byte_size from the
diff --git a/gdb/valprint.c b/gdb/valprint.c
index dba528b..ddb16e4 100644
--- a/gdb/valprint.c
+++ b/gdb/valprint.c
@@ -1118,7 +1118,17 @@ val_print_array_elements (struct type *type, const gdb_byte *valaddr,
index_type = TYPE_INDEX_TYPE (type);
if (get_array_bounds (type, &low_bound, &high_bound))
- len = high_bound - low_bound + 1;
+ {
+ /* The array length should normally be HIGH_BOUND - LOW_BOUND + 1.
+ But we have to be a little extra careful, because some languages
+ such as Ada allow LOW_BOUND to be greater than HIGH_BOUND for
+ empty arrays. In that situation, the array length is just zero,
+ not negative! */
+ if (low_bound > high_bound)
+ len = 0;
+ else
+ len = high_bound - low_bound + 1;
+ }
else
{
warning (_("unable to get bounds of array, assuming null array"));