mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-06 14:49:38 +08:00
* ada-lang.c (ada_template_to_fixed_record_type_1): Check size
of type to guard against a crash.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2008-02-04 Jerome Guitton <guitton@adacore.com>
|
||||||
|
|
||||||
|
* ada-lang.c (ada_template_to_fixed_record_type_1): Check size
|
||||||
|
of type to guard against a crash.
|
||||||
|
|
||||||
2009-02-04 Jerome Guitton <guitton@adacore.com>
|
2009-02-04 Jerome Guitton <guitton@adacore.com>
|
||||||
|
|
||||||
* value.c (value_from_contents_and_address): Always return
|
* value.c (value_from_contents_and_address): Always return
|
||||||
|
@ -6877,7 +6877,15 @@ ada_template_to_fixed_record_type_1 (struct type *type,
|
|||||||
else if (is_dynamic_field (type, f))
|
else if (is_dynamic_field (type, f))
|
||||||
{
|
{
|
||||||
if (dval0 == NULL)
|
if (dval0 == NULL)
|
||||||
dval = value_from_contents_and_address (rtype, valaddr, address);
|
{
|
||||||
|
/* rtype's length is computed based on the run-time
|
||||||
|
value of discriminants. If the discriminants are not
|
||||||
|
initialized, the type size may be completely bogus and
|
||||||
|
GDB may fail to allocate a value for it. So check the
|
||||||
|
size first before creating the value. */
|
||||||
|
check_size (rtype);
|
||||||
|
dval = value_from_contents_and_address (rtype, valaddr, address);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
dval = dval0;
|
dval = dval0;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user