diff options
author | Yao Qi <yao.qi@linaro.org> | 2017-02-23 11:05:03 +0000 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2017-02-23 11:05:03 +0000 |
commit | 0a8beaba19a991bbfcf03756c4a150bf9512a164 (patch) | |
tree | 90906b11ad253cd9e8fc78a9fb4d2df99576e0b5 | |
parent | 946416fc5a466321581407a5b28989e194bd5acb (diff) | |
download | gdb-0a8beaba19a991bbfcf03756c4a150bf9512a164.zip gdb-0a8beaba19a991bbfcf03756c4a150bf9512a164.tar.gz gdb-0a8beaba19a991bbfcf03756c4a150bf9512a164.tar.bz2 |
Use delete instead of xfree for varobj_item
In commit 2f408ec (Use ui_file_as_string throughout more), we start to
new varobj_item,
> - vitem = XNEW (struct varobj_item);
> + vitem = new varobj_item ();
but we still use xfree. This causes some ASAN errors,
-var-update container^M
=================================================================^M
^[[1m^[[31m==20660==ERROR: AddressSanitizer: alloc-dealloc-mismatch (operator new vs free) on 0x602000090c10^M
^[[1m^[[0m #0 0x2baa77d03631 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x54631)^M
#1 0x80e0c8 in xfree(void*) /home/yao/SourceCode/gnu/gdb/git/gdb/common/common-utils.c:100^M
#2 0xc13670 in varobj_clear_saved_item /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:727^M
#3 0xc13957 in update_dynamic_varobj_children /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:752^M
#4 0xc1841c in varobj_update(varobj**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:1699^M
#5 0x5a2bf7 in varobj_update_one /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:712^M
#6 0x5a2a41 in mi_cmd_var_update(char*, char**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:695^
........
^M
^[[1m^[[32m0x602000090c10 is located 0 bytes inside of 16-byte region [0x602000090c10,0x602000090c20)^M
^[[1m^[[0m^[[1m^[[35mallocated by thread T0 here:^[[1m^[[0m^M
#0 0x2baa77d0415f in operator new(unsigned long) (/usr/lib/x86_64-linux-gnu/libasan.so.1+0x5515f)^M
#1 0x63613e in py_varobj_iter_next /home/yao/SourceCode/gnu/gdb/git/gdb/python/py-varobj.c:112^M
#2 0xc13b89 in update_dynamic_varobj_children /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:776^M
#3 0xc1841c in varobj_update(varobj**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/varobj.c:1699^M
#4 0x5a2bf7 in varobj_update_one /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:712^M
#5 0x5a2a41 in mi_cmd_var_update(char*, char**, int) /home/yao/SourceCode/gnu/gdb/git/gdb/mi/mi-cmd-var.c:695^M
gdb:
2017-02-23 Yao Qi <yao.qi@linaro.org>
* varobj.c (varobj_clear_saved_item): Use delete instead of
xfree.
(update_dynamic_varobj_children): Likewise.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/varobj.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3ac5170..ade40bd 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2017-02-23 Yao Qi <yao.qi@linaro.org> + + * varobj.c (varobj_clear_saved_item): Use delete instead of + xfree. + (update_dynamic_varobj_children): Likewise. + 2017-02-21 Jan Kratochvil <jan.kratochvil@redhat.com> * dwarf2read.c (dwarf2_record_block_ranges): Add forgotten BASEADDR. diff --git a/gdb/varobj.c b/gdb/varobj.c index 4b12826..173abf3 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -724,7 +724,7 @@ varobj_clear_saved_item (struct varobj_dynamic *var) if (var->saved_item != NULL) { value_free (var->saved_item->value); - xfree (var->saved_item); + delete var->saved_item; var->saved_item = NULL; } } @@ -799,7 +799,7 @@ update_dynamic_varobj_children (struct varobj *var, can_mention ? cchanged : NULL, i, item); - xfree (item); + delete item; } else { |