diff options
author | Adrian Kummerländer | 2014-05-03 22:04:16 +0200 |
---|---|---|
committer | Adrian Kummerländer | 2014-05-03 22:04:16 +0200 |
commit | 261170cc5b6661106877dc2611dab281f4d91348 (patch) | |
tree | 8482f249c090af5ca462f7e36a4b87082185f027 /src/support/xerces_string_guard.cc | |
parent | e5ed418907f09bf8905463f42a44593d51159bc9 (diff) | |
download | InputXSLT-261170cc5b6661106877dc2611dab281f4d91348.tar InputXSLT-261170cc5b6661106877dc2611dab281f4d91348.tar.gz InputXSLT-261170cc5b6661106877dc2611dab281f4d91348.tar.bz2 InputXSLT-261170cc5b6661106877dc2611dab281f4d91348.tar.lz InputXSLT-261170cc5b6661106877dc2611dab281f4d91348.tar.xz InputXSLT-261170cc5b6661106877dc2611dab281f4d91348.tar.zst InputXSLT-261170cc5b6661106877dc2611dab281f4d91348.zip |
Revamped DomDocumentCache with regard to thread safety
* DomDocumentCache::item class now is _finalized_ by default and doesn't perform document instantiation, just lifetime management
** xercesc::DOMDocument is instantiated inside the external function implementations and committed to the document cache for conversion to a xalan document
* added mutex with scoped lock to prevent concurrent write access to the std::unordered_map contained withing DomDocumentCache
* functionality of the _get_ member method was split into _get_ and _create_
** added typedef for std::pair specialization type "optional_item" that functions as the return value of _create_ and _get_
* "locator->getSystemId()" was leaking memory as xerces doesn't manage the lifetime of the returned heap-allocated char array
** analog to XMLCh* strings
** transformed XercesStringGuard into template class to be instantiated on either XMLCh or char
Diffstat (limited to 'src/support/xerces_string_guard.cc')
-rw-r--r-- | src/support/xerces_string_guard.cc | 18 |
1 files changed, 0 insertions, 18 deletions
diff --git a/src/support/xerces_string_guard.cc b/src/support/xerces_string_guard.cc deleted file mode 100644 index 14ad29b..0000000 --- a/src/support/xerces_string_guard.cc +++ /dev/null @@ -1,18 +0,0 @@ -#include "xerces_string_guard.h" - -namespace InputXSLT { - -XercesStringGuard::XercesStringGuard(const std::string& src): - string_(xercesc::XMLString::transcode(src.data())) { } - -XercesStringGuard::~XercesStringGuard() { - xercesc::XMLString::release( - const_cast<XMLCh**>(&this->string_) - ); -} - -XMLCh* XercesStringGuard::operator*() { - return this->string_; -} - -} |