From 6ad368b8caf6650852983fc23814c9f393da0439 Mon Sep 17 00:00:00 2001 From: Simon Marchi Date: Wed, 9 Dec 2020 14:49:02 -0500 Subject: [PATCH] gdb: address review comments of previous series I forgot to include fixes for review comments I got before pushing the previous commits (or I pushed the wrong commits). This one fixes it. - Return {} instead of false in get_discrete_low_bound and get_discrete_high_bound. - Compute high bound after confirming low bound is valid in get_discrete_bounds. gdb/ChangeLog: * gdbtypes.c (get_discrete_low_bound, get_discrete_high_bound): Return {} instead of false. (get_discrete_bounds): Compute high bound only if low bound is valid. Change-Id: I5f9a66b3672adfac9441068c899ab113ab2c331a --- gdb/ChangeLog | 7 +++++++ gdb/gdbtypes.c | 14 ++++++++------ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 0e01628c651..afdfc772094 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2020-12-09 Simon Marchi + + * gdbtypes.c (get_discrete_low_bound, get_discrete_high_bound): + Return {} instead of false. + (get_discrete_bounds): Compute high bound only if low bound is + valid. + 2020-12-09 Simon Marchi PR 26875, PR 26901 diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c index 9a170080d30..3e489fd1803 100644 --- a/gdb/gdbtypes.c +++ b/gdb/gdbtypes.c @@ -1093,7 +1093,7 @@ get_discrete_low_bound (struct type *type) case TYPE_CODE_INT: if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */ - return false; + return {}; if (!type->is_unsigned ()) return -(1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1)); @@ -1103,7 +1103,7 @@ get_discrete_low_bound (struct type *type) return 0; default: - return false; + return {}; } } @@ -1160,7 +1160,7 @@ get_discrete_high_bound (struct type *type) case TYPE_CODE_INT: if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */ - return false; + return {}; if (!type->is_unsigned ()) { @@ -1179,7 +1179,7 @@ get_discrete_high_bound (struct type *type) } default: - return false; + return {}; } } @@ -1189,9 +1189,11 @@ bool get_discrete_bounds (struct type *type, LONGEST *lowp, LONGEST *highp) { gdb::optional low = get_discrete_low_bound (type); - gdb::optional high = get_discrete_high_bound (type); + if (!low.has_value ()) + return false; - if (!low.has_value () || !high.has_value ()) + gdb::optional high = get_discrete_high_bound (type); + if (!high.has_value ()) return false; *lowp = *low; -- 2.30.2