From 6d353960542e5c95f29d45b9359db25945a414a4 Mon Sep 17 00:00:00 2001 From: Adrian Kummerlaender Date: Sat, 25 Apr 2020 20:42:08 +0200 Subject: 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… --- src/support/dom/document_cache.cc | 15 ++++++++------- 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(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 #include #include +#include #include "common.h" namespace InputXSLT { class DomDocumentCache { - class document_deleter { - friend std::unique_ptr; - - void operator()(xercesc::DOMDocument*); - }; - public: typedef std::unique_ptr< xercesc::DOMDocument, - document_deleter + std::function > document_ptr; static document_ptr createDocument(); -- cgit v1.2.3