diff --git a/src/table.cpp b/src/table.cpp index 3da6831..c2c3636 100644 --- a/src/table.cpp +++ b/src/table.cpp @@ -144,7 +144,9 @@ void Table::setParentTableSet(TableSetBase *parent) { Q_D(Table); d->parentTableSet = parent; - d->parentTableSet->add(this); + + if (parent) + d->parentTableSet->add(this); } TableSetBase *Table::childTableSet(const QString &name) const diff --git a/src/tablesetbase.cpp b/src/tablesetbase.cpp index 604fd0a..210819b 100644 --- a/src/tablesetbase.cpp +++ b/src/tablesetbase.cpp @@ -37,6 +37,12 @@ TableSetBase::TableSetBase(Table *parent) : QObject(parent), parent->add(this); } +TableSetBase::~TableSetBase() +{ + foreach (Table *t, _tables) + t->setParentTableSet(nullptr); +} + int TableSetBase::save(Database *db, bool cleanUp) { int rowsAffected = 0; diff --git a/src/tablesetbase_p.h b/src/tablesetbase_p.h index 4967bbb..2a92abf 100644 --- a/src/tablesetbase_p.h +++ b/src/tablesetbase_p.h @@ -37,6 +37,7 @@ class TableSetBase : public QObject public: explicit TableSetBase(Database *parent); explicit TableSetBase(Table *parent); + virtual ~TableSetBase(); virtual int save(Database *db, bool cleanUp = false); void clearChilds();