From: Matthias Maennich via libabigail Date: Mon, 15 Apr 2019 17:05:17 +0000 (+0100) Subject: add missing virtual destructors X-Git-Tag: libabigail-1.7~129 X-Git-Url: https://sourceware.org/git/?a=commitdiff_plain;h=704932b75ab9a9cb6fccc52e6b077e6a3fad9372;p=libabigail.git add missing virtual destructors Several virtual desctructors were missing. Even though there might not have been actual leaks or similar bugs, it is worth fixing these locations as they might lead to bugs in the future. Clang also warns at these locations: warning: delete called on non-final 'abigail::ir::corpus' that has virtual functions but non-virtual destructor [-Wdelete-non-virtual-dtor] * include/abg-comparison.h: add virtual destructor for corpus_diff and diff_node_visitor * include/abg-corpus.h: add virtual destructor for corpus * include/abg-reporter.h: add virtual destructor for reporter_base * include/abg-traverse.h: add virtual destructor for traversable_base Signed-off-by: Matthias Maennich --- diff --git a/include/abg-comparison.h b/include/abg-comparison.h index ba4339c9..cf2fa4e1 100644 --- a/include/abg-comparison.h +++ b/include/abg-comparison.h @@ -2278,6 +2278,8 @@ public: class diff_stats; + virtual ~corpus_diff() {} + /// A convenience typedef for a shared pointer to @ref diff_stats typedef shared_ptr diff_stats_sptr; @@ -2544,6 +2546,8 @@ public: diff_node_visitor(); + virtual ~diff_node_visitor() {} + diff_node_visitor(visiting_kind k); visiting_kind diff --git a/include/abg-corpus.h b/include/abg-corpus.h index 258056e4..1a25b4d1 100644 --- a/include/abg-corpus.h +++ b/include/abg-corpus.h @@ -78,6 +78,8 @@ public: corpus(ir::environment*, const string& path= ""); + virtual ~corpus() {} + const environment* get_environment() const; diff --git a/include/abg-reporter.h b/include/abg-reporter.h index 4085aeb8..55cb8cc7 100644 --- a/include/abg-reporter.h +++ b/include/abg-reporter.h @@ -141,6 +141,7 @@ public: report(const corpus_diff& d, ostream& out, const string& indent = "") const = 0; + virtual ~reporter_base() {} }; //end class reporter_base class default_reporter; diff --git a/include/abg-traverse.h b/include/abg-traverse.h index 5d395c2a..848c71b2 100644 --- a/include/abg-traverse.h +++ b/include/abg-traverse.h @@ -76,6 +76,9 @@ public: traversable_base() : visiting_() {} + + virtual ~traversable_base() {} + /// This virtual method is overloaded and implemented by any single /// type which instance is going to be visited during the traversal /// of translation unit nodes.