diff options
author | Jim Blandy <jimb@codesourcery.com> | 2002-08-21 17:24:31 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2002-08-21 17:24:31 +0000 |
commit | d174216d52ba742b085f7b8184f485d9ceee020c (patch) | |
tree | 9a102571167db73712a81f5201d210c1abd00458 /gdb/valops.c | |
parent | 0ab7a791257080198a22f27a12563758f1e78c96 (diff) | |
download | gdb-d174216d52ba742b085f7b8184f485d9ceee020c.zip gdb-d174216d52ba742b085f7b8184f485d9ceee020c.tar.gz gdb-d174216d52ba742b085f7b8184f485d9ceee020c.tar.bz2 |
* valops.c (value_cast): Simplify and correct logic for doing a
static cast from a pointer to a base class to a pointer to a
derived class.
Diffstat (limited to 'gdb/valops.c')
-rw-r--r-- | gdb/valops.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/gdb/valops.c b/gdb/valops.c index 569c85b..1eeedd3 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -361,18 +361,11 @@ value_cast (struct type *type, struct value *arg2) value_zero (t1, not_lval), 0, t1, 1); if (v) { - struct value *v2 = value_ind (arg2); - VALUE_ADDRESS (v2) -= VALUE_ADDRESS (v) - + VALUE_OFFSET (v); - - /* JYG: adjust the new pointer value and - embedded offset. */ - v2->aligner.contents[0] -= VALUE_EMBEDDED_OFFSET (v); - VALUE_EMBEDDED_OFFSET (v2) = 0; - - v2 = value_addr (v2); - VALUE_TYPE (v2) = type; - return v2; + CORE_ADDR addr2 = value_as_address (arg2); + addr2 -= (VALUE_ADDRESS (v) + + VALUE_OFFSET (v) + + VALUE_EMBEDDED_OFFSET (v)); + return value_from_pointer (type, addr2); } } } |