diff options
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/p-valprint.c | 13 |
2 files changed, 9 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 2ccf4e6..fd1f360 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,9 @@ 2017-09-09 Tom Tromey <tom@tromey.com> + * p-valprint.c (pascal_object_print_value): Use gdb::byte_vector. + +2017-09-09 Tom Tromey <tom@tromey.com> + * stack.c (func_command): Use gdb::def_vector. 2017-09-09 Tom Tromey <tom@tromey.com> diff --git a/gdb/p-valprint.c b/gdb/p-valprint.c index 1cd69cc..d12b636 100644 --- a/gdb/p-valprint.c +++ b/gdb/p-valprint.c @@ -38,6 +38,7 @@ #include "cp-abi.h" #include "cp-support.h" #include "objfiles.h" +#include "common/byte-vector.h" /* Decorations for Pascal. */ @@ -730,6 +731,7 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr, const gdb_byte *base_valaddr = NULL; LONGEST thisoffset; int skip = 0; + gdb::byte_vector buf; if (BASETYPE_VIA_VIRTUAL (type, i)) { @@ -769,20 +771,15 @@ pascal_object_print_value (struct type *type, const gdb_byte *valaddr, if (boffset < 0 || boffset >= TYPE_LENGTH (type)) { - gdb_byte *buf; - struct cleanup *back_to; + buf.resize (TYPE_LENGTH (baseclass)); - buf = (gdb_byte *) xmalloc (TYPE_LENGTH (baseclass)); - back_to = make_cleanup (xfree, buf); - - base_valaddr = buf; - if (target_read_memory (address + boffset, buf, + base_valaddr = buf.data (); + if (target_read_memory (address + boffset, buf.data (), TYPE_LENGTH (baseclass)) != 0) skip = 1; address = address + boffset; thisoffset = 0; boffset = 0; - do_cleanups (back_to); } else base_valaddr = valaddr; |