diff options
author | Joel Brobecker <brobecker@gnat.com> | 2011-03-07 08:57:09 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2011-03-07 08:57:09 +0000 |
commit | dd70cc93886d30b8fa7313122946e50e9e224072 (patch) | |
tree | 6bf14aee37e94a040305dbed53e6819b21ee07dc | |
parent | acc69ddaffbb84a833130a62d391b91715a71e98 (diff) | |
download | gdb-dd70cc93886d30b8fa7313122946e50e9e224072.zip gdb-dd70cc93886d30b8fa7313122946e50e9e224072.tar.gz gdb-dd70cc93886d30b8fa7313122946e50e9e224072.tar.bz2 |
simplify ada-valprint.c:ada_val_print_array
Two things:
- Move the declaration of a couple of variables inside the block
where they are actually used;
- Remove some code that checks against NULL/zero, because the
condition should always be false. Add some gdb_asserts to
make sure we never fail those assumptions.
gdb/ChangeLog:
* ada-valprint.c (ada_val_print_array): Move the declaration of
"byte_order" and "elttype" inside the block where these variables
are actually used. Remove some special handling for the case
where "elttype" and "eltlen" are null. Replace by a comment
and a couple of assertion checks.
-rw-r--r-- | gdb/ChangeLog | 9 | ||||
-rw-r--r-- | gdb/ada-valprint.c | 20 |
2 files changed, 19 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 4887026..965917c 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2011-03-07 Joel Brobecker <brobecker@adacore.com> + Michael Snyder <msnyder@vmware.com> + + * ada-valprint.c (ada_val_print_array): Move the declaration of + "byte_order" and "elttype" inside the block where these variables + are actually used. Remove some special handling for the case + where "elttype" and "eltlen" are null. Replace by a comment + and a couple of assertion checks. + 2011-03-05 Michael Snyder <msnyder@vmware.com> * source.c (add_path): Replace semicolon at end of block. diff --git a/gdb/ada-valprint.c b/gdb/ada-valprint.c index 9381ecc..09266ce 100644 --- a/gdb/ada-valprint.c +++ b/gdb/ada-valprint.c @@ -605,25 +605,25 @@ ada_val_print_array (struct type *type, const gdb_byte *valaddr, const struct value *val, const struct value_print_options *options) { - enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); - struct type *elttype = TYPE_TARGET_TYPE (type); int result = 0; /* For an array of chars, print with string syntax. */ if (ada_is_string_type (type) && (options->format == 0 || options->format == 's')) { + enum bfd_endian byte_order = gdbarch_byte_order (get_type_arch (type)); + struct type *elttype = TYPE_TARGET_TYPE (type); unsigned int eltlen; unsigned int len; - if (elttype == NULL) - eltlen = 0; - else - eltlen = TYPE_LENGTH (elttype); - if (eltlen == 0) - len = 0; - else - len = TYPE_LENGTH (type) / eltlen; + /* We know that ELTTYPE cannot possibly be null, because we found + that TYPE is a string-like type. Similarly, the size of ELTTYPE + should also be non-null, since it's a character-like type. */ + gdb_assert (elttype != NULL); + gdb_assert (TYPE_LENGTH (elttype) != 0); + + eltlen = TYPE_LENGTH (elttype); + len = TYPE_LENGTH (type) / eltlen; if (options->prettyprint_arrays) print_spaces_filtered (2 + 2 * recurse, stream); |