From 8f3e18e12c8e85ad635dc765020327477668a131 Mon Sep 17 00:00:00 2001 From: Robin Haberkorn Date: Fri, 16 Nov 2012 23:14:00 +0100 Subject: Make sure undo tokens and RB-tree entries are destroyed properly * when a pointer to an abstract base class is "deleted", it must have a virtual destructor so the destructor of derived classes is executed * fixes for instance, deletion of save point files when the command line is terminated (undo stack is discarded) * simplified some undotoken code --- goto.cpp | 3 --- rbtree.h | 2 ++ undo.h | 2 ++ 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/goto.cpp b/goto.cpp index 63ccc05..c64a896 100644 --- a/goto.cpp +++ b/goto.cpp @@ -36,9 +36,6 @@ class GotoTable : public RBTree { run(void) { table->set(name, pc); - g_free(name); - name = NULL; - #ifdef DEBUG table->dump(); #endif diff --git a/rbtree.h b/rbtree.h index f4831ce..bb3d8f4 100644 --- a/rbtree.h +++ b/rbtree.h @@ -21,6 +21,8 @@ public: public: RB_ENTRY(RBEntry) nodes; + virtual ~RBEntry() {} + inline RBEntry * next(void) { diff --git a/undo.h b/undo.h index a32d02a..32bb2d5 100644 --- a/undo.h +++ b/undo.h @@ -18,6 +18,8 @@ public: gint pos; + virtual ~UndoToken() {} + virtual void run() = 0; }; -- cgit v1.2.3