[PATCH] Make dtor of mapped_index_base virtual
Sun Dec 31 13:49:00 GMT 2017
On 2017-12-31 05:12, ÐÐ°Ð²ÐµÐ» ÐÑÑÐºÐ¾Ð² wrote:
> Hi Simon
>> Do you get a build error or something?
> Yes, I get a build error with Clang:
> dwarf2read.c:25409:5: error: destructor called on non-final
> has virtual functions but non-virtual destructor
> data->index_table->~mapped_index ();
>> Since the goal is that we don't delete through a pointer of this
>> class, does
> the destructor need to be virtual (not that it would hurt anything)?
> Just to handle the case if someone would delete through a pointer to
> "mapped_index_base" class.
I think this warning was fixed by the following commit:
We don't want anything deleting through a pointer of the base class,
because (for now) instances of the two child classes (mapped_index and
mapped_debug_names) are allocated differently. One is allocated on the
objfile obstack (some kind of manual memory block allocation) and the
other is allocated with new. Trying to delete or manually call the
destructor through a pointer to mapped_index_base would do the wrong
thing for one of the two children. So it's on purpose that
mapped_index_base's destructor is hidden, and it doesn't matter whether
or not it is virtual.
More information about the Gdb-patches