From 34826e37971f709a1fa6eef0b257f8f7a8b0687e Mon Sep 17 00:00:00 2001 From: Alex Fabijanic Date: Mon, 3 Jul 2017 17:32:28 +0200 Subject: [PATCH] fix RowFilter refcount --- Data/src/RowFilter.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/Data/src/RowFilter.cpp b/Data/src/RowFilter.cpp index 4c7db2592..a0b3b5e9c 100644 --- a/Data/src/RowFilter.cpp +++ b/Data/src/RowFilter.cpp @@ -29,8 +29,8 @@ RowFilter::RowFilter(RecordSet* pRecordSet): _pRecordSet(pRecordSet), _not(false { poco_check_ptr(pRecordSet); init(); - duplicate(); - _pRecordSet->filter(this); + Ptr pThis(this, true); + _pRecordSet->filter(pThis); } @@ -40,8 +40,8 @@ RowFilter::RowFilter(Ptr pParent, LogicOperator op): _pRecordSet(0), { poco_check_ptr(_pParent.get()); init(); - duplicate(); - _pParent->addFilter(this, op); + Ptr pThis(this, true); + _pParent->addFilter(pThis, op); } @@ -64,9 +64,12 @@ RowFilter::~RowFilter() try { if (_pRecordSet) _pRecordSet->filter(0); - if (_pParent && _pParent->has(this)) - _pParent->removeFilter(this); - release(); + if (_pParent) + { + Ptr pThis(this, true); + if(_pParent->has(pThis)) + _pParent->removeFilter(pThis); + } } catch (...) {