* gdbtypes.c (make_reference_type): Preserve the type chain
and set the length of all the variants of the pointer type.
This commit is contained in:
parent
5d14452b8a
commit
1e98b32608
|
@ -1,3 +1,8 @@
|
|||
2007-05-17 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* gdbtypes.c (make_reference_type): Preserve the type chain
|
||||
and set the length of all the variants of the pointer type.
|
||||
|
||||
2007-05-17 Joel Brobecker <brobecker@adacore.com>
|
||||
|
||||
* gdbtypes.c (make_pointer_type): Preserve the pointer type chain
|
||||
|
|
|
@ -354,6 +354,7 @@ make_reference_type (struct type *type, struct type **typeptr)
|
|||
{
|
||||
struct type *ntype; /* New type */
|
||||
struct objfile *objfile;
|
||||
struct type *chain;
|
||||
|
||||
ntype = TYPE_REFERENCE_TYPE (type);
|
||||
|
||||
|
@ -379,7 +380,9 @@ make_reference_type (struct type *type, struct type **typeptr)
|
|||
{
|
||||
ntype = *typeptr;
|
||||
objfile = TYPE_OBJFILE (ntype);
|
||||
chain = TYPE_CHAIN (ntype);
|
||||
smash_type (ntype);
|
||||
TYPE_CHAIN (ntype) = chain;
|
||||
TYPE_OBJFILE (ntype) = objfile;
|
||||
}
|
||||
|
||||
|
@ -395,6 +398,14 @@ make_reference_type (struct type *type, struct type **typeptr)
|
|||
if (!TYPE_REFERENCE_TYPE (type)) /* Remember it, if don't have one. */
|
||||
TYPE_REFERENCE_TYPE (type) = ntype;
|
||||
|
||||
/* Update the length of all the other variants of this type. */
|
||||
chain = TYPE_CHAIN (ntype);
|
||||
while (chain != ntype)
|
||||
{
|
||||
TYPE_LENGTH (chain) = TYPE_LENGTH (ntype);
|
||||
chain = TYPE_CHAIN (chain);
|
||||
}
|
||||
|
||||
return ntype;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue