diff options
author | Adrian Kummerlaender | 2020-04-25 20:42:08 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2020-04-25 20:42:08 +0200 |
commit | 6d353960542e5c95f29d45b9359db25945a414a4 (patch) | |
tree | cfdc4fdc02a3bf89c73708380d71774b9445ae8a | |
parent | d4f3c3d2f61616e09d01cc927ba0dbdc393d25a0 (diff) | |
download | InputXSLT-6d353960542e5c95f29d45b9359db25945a414a4.tar InputXSLT-6d353960542e5c95f29d45b9359db25945a414a4.tar.gz InputXSLT-6d353960542e5c95f29d45b9359db25945a414a4.tar.bz2 InputXSLT-6d353960542e5c95f29d45b9359db25945a414a4.tar.lz InputXSLT-6d353960542e5c95f29d45b9359db25945a414a4.tar.xz InputXSLT-6d353960542e5c95f29d45b9359db25945a414a4.tar.zst InputXSLT-6d353960542e5c95f29d45b9359db25945a414a4.zip |
Fix std::unique_ptr custom deleter issue
Somehow the previous custom deleter for xercesc::DOMDocument fails
invokable assertions planet a compiler update. A lambda function
with the same signature wors for some reason…
-rw-r--r-- | src/support/dom/document_cache.cc | 15 | ||||
-rw-r--r-- | src/support/dom/document_cache.h | 9 |
2 files changed, 10 insertions, 14 deletions
diff --git a/src/support/dom/document_cache.cc b/src/support/dom/document_cache.cc index c000aef..0133234 100644 --- a/src/support/dom/document_cache.cc +++ b/src/support/dom/document_cache.cc @@ -11,7 +11,10 @@ namespace InputXSLT { auto DomDocumentCache::createDocument() -> document_ptr { return document_ptr( - xercesc::DOMImplementation::getImplementation()->createDocument() + xercesc::DOMImplementation::getImplementation()->createDocument(), + [](xercesc::DOMDocument* ptr) { + ptr->release(); + } ); } @@ -21,7 +24,10 @@ auto DomDocumentCache::createDocument(const std::string& name) -> document_ptr { nullptr, *XercesStringGuard<XMLCh>(name), nullptr - ) + ), + [](xercesc::DOMDocument* ptr) { + ptr->release(); + } ); } @@ -41,9 +47,4 @@ xalan::XalanDocument* DomDocumentCache::create(document_ptr&& document) { return this->cache_.top()->getXalanDocument(); } -void DomDocumentCache::document_deleter::operator()( - xercesc::DOMDocument* document) { - document->release(); -} - } diff --git a/src/support/dom/document_cache.h b/src/support/dom/document_cache.h index f472249..115d194 100644 --- a/src/support/dom/document_cache.h +++ b/src/support/dom/document_cache.h @@ -8,22 +8,17 @@ #include <mutex> #include <stack> #include <memory> +#include <functional> #include "common.h" namespace InputXSLT { class DomDocumentCache { - class document_deleter { - friend std::unique_ptr<xercesc::DOMDocument, document_deleter>; - - void operator()(xercesc::DOMDocument*); - }; - public: typedef std::unique_ptr< xercesc::DOMDocument, - document_deleter + std::function<void(xercesc::DOMDocument*)> > document_ptr; static document_ptr createDocument(); |