diff options
author | Sanimir Agovic <sanimir.agovic@intel.com> | 2013-10-14 08:36:13 +0100 |
---|---|---|
committer | Sanimir Agovic <sanimir.agovic@intel.com> | 2014-04-11 13:43:51 +0100 |
commit | bcd629a44fff61527430f353cf77e20fe3afc395 (patch) | |
tree | b66b31d1a1fa0db37c61e17b2abeb23222d01b52 /gdb/cp-valprint.c | |
parent | 04b19544ef6a97b62b2cc4a3170b900e046ab185 (diff) | |
download | gdb-bcd629a44fff61527430f353cf77e20fe3afc395.zip gdb-bcd629a44fff61527430f353cf77e20fe3afc395.tar.gz gdb-bcd629a44fff61527430f353cf77e20fe3afc395.tar.bz2 |
vla: update type from newly created value
Constructing a value based on a type and address might change the type
of the newly constructed value. Thus re-fetch type via value_type to ensure
we have the correct type at hand.
* ada-lang.c (ada_value_primitive_packed_val): Re-fetch type from value.
(ada_template_to_fixed_record_type_1): Likewise.
(ada_to_fixed_type_1): Likewise.
* cp-valprint.c (cp_print_value_fields_rtti): Likewise.
(cp_print_value): Likewise.
* d-valprint.c (dynamic_array_type): Likewise.
* eval.c (evaluate_subexp_with_coercion): Likewise.
* findvar.c (address_of_variable): Likewise.
* jv-valprint.c (java_value_print): Likewise.
* valops.c (value_ind): Likewise.
* value.c (coerce_ref): Likewise.
Diffstat (limited to 'gdb/cp-valprint.c')
-rw-r--r-- | gdb/cp-valprint.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gdb/cp-valprint.c b/gdb/cp-valprint.c index 2d366b9..3e1d6ed 100644 --- a/gdb/cp-valprint.c +++ b/gdb/cp-valprint.c @@ -443,6 +443,7 @@ cp_print_value_fields_rtti (struct type *type, /* Ugh, we have to convert back to a value here. */ value = value_from_contents_and_address (type, valaddr + offset, address + offset); + type = value_type (value); /* We don't actually care about most of the result here -- just the type. We already have the correct offset, due to how val_print was initially called. */ @@ -545,6 +546,7 @@ cp_print_value (struct type *type, struct type *real_type, base_val = value_from_contents_and_address (baseclass, buf, address + boffset); + baseclass = value_type (base_val); thisoffset = 0; boffset = 0; thistype = baseclass; |