diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-16 23:14:00 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-11-16 23:14:00 +0100 |
commit | 8f3e18e12c8e85ad635dc765020327477668a131 (patch) | |
tree | 4a53643553452fd05d7d00d3119b55348bf80e10 | |
parent | ac204acb60f14d78610c60229d76fe7438c06424 (diff) | |
download | sciteco-8f3e18e12c8e85ad635dc765020327477668a131.tar.gz |
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
-rw-r--r-- | goto.cpp | 3 | ||||
-rw-r--r-- | rbtree.h | 2 | ||||
-rw-r--r-- | undo.h | 2 |
3 files changed, 4 insertions, 3 deletions
@@ -36,9 +36,6 @@ class GotoTable : public RBTree { run(void) { table->set(name, pc); - g_free(name); - name = NULL; - #ifdef DEBUG table->dump(); #endif @@ -21,6 +21,8 @@ public: public: RB_ENTRY(RBEntry) nodes; + virtual ~RBEntry() {} + inline RBEntry * next(void) { @@ -18,6 +18,8 @@ public: gint pos; + virtual ~UndoToken() {} + virtual void run() = 0; }; |