aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2011-03-07 08:57:09 +0000
committerJoel Brobecker <brobecker@gnat.com>2011-03-07 08:57:09 +0000
commitdd70cc93886d30b8fa7313122946e50e9e224072 (patch)
tree6bf14aee37e94a040305dbed53e6819b21ee07dc
parentacc69ddaffbb84a833130a62d391b91715a71e98 (diff)
downloadgdb-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/ChangeLog9
-rw-r--r--gdb/ada-valprint.c20
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);