diff options
author | David Tardon <dtardon@redhat.com> | 2017-04-20 16:02:50 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2017-04-20 16:12:25 +0200 |
commit | 208e6eec8535ba20c7b2afdd9f1f07083c99f195 (patch) | |
tree | 0b8a713cdec6e46921ba619b589743fbdbe42043 | |
parent | 442b4812cf058481e00c186ef738c990e1a50284 (diff) |
move cleanup of xmlTextReaderPtr to a single place
Change-Id: Idf32d2f27b7c97276e57e05a60270778ed92f611
-rw-r--r-- | src/lib/ABWParser.cpp | 2 | ||||
-rw-r--r-- | src/lib/ABWXMLHelper.cpp | 10 | ||||
-rw-r--r-- | src/lib/ABWXMLHelper.h | 4 | ||||
-rw-r--r-- | src/lib/AbiDocument.cpp | 5 |
4 files changed, 9 insertions, 12 deletions
diff --git a/src/lib/ABWParser.cpp b/src/lib/ABWParser.cpp index bdbb83d..09a739a 100644 --- a/src/lib/ABWParser.cpp +++ b/src/lib/ABWParser.cpp @@ -188,7 +188,7 @@ bool libabw::ABWParser::processXmlDocument(librevenge::RVNGInputStream *input) return false; ABWXMLErrorWatcher watcher; - std::shared_ptr<xmlTextReader> reader(xmlReaderForStream(input, &watcher), xmlFreeTextReader); + auto reader(xmlReaderForStream(input, &watcher)); if (!reader) return false; int ret = xmlTextReaderRead(reader.get()); diff --git a/src/lib/ABWXMLHelper.cpp b/src/lib/ABWXMLHelper.cpp index 5ce5185..09e6a8c 100644 --- a/src/lib/ABWXMLHelper.cpp +++ b/src/lib/ABWXMLHelper.cpp @@ -109,11 +109,13 @@ void ABWXMLErrorWatcher::setError() // xmlTextReader helper function -xmlTextReaderPtr xmlReaderForStream(librevenge::RVNGInputStream *input, ABWXMLErrorWatcher *watcher) +std::unique_ptr<xmlTextReader, void(*)(xmlTextReaderPtr)> xmlReaderForStream(librevenge::RVNGInputStream *input, ABWXMLErrorWatcher *watcher) { - xmlTextReaderPtr reader = xmlReaderForIO(abwxmlInputReadFunc, abwxmlInputCloseFunc, (void *)input, 0, 0, - XML_PARSE_NOBLANKS|XML_PARSE_NOENT|XML_PARSE_NONET|XML_PARSE_RECOVER); - xmlTextReaderSetErrorHandler(reader, abwxmlReaderErrorFunc, watcher); + std::unique_ptr<xmlTextReader, void(*)(xmlTextReaderPtr)> reader( + xmlReaderForIO(abwxmlInputReadFunc, abwxmlInputCloseFunc, (void *)input, 0, 0, + XML_PARSE_NOBLANKS|XML_PARSE_NOENT|XML_PARSE_NONET|XML_PARSE_RECOVER), + xmlFreeTextReader); + xmlTextReaderSetErrorHandler(reader.get(), abwxmlReaderErrorFunc, watcher); return reader; } diff --git a/src/lib/ABWXMLHelper.h b/src/lib/ABWXMLHelper.h index d2b4aea..5cd6b2c 100644 --- a/src/lib/ABWXMLHelper.h +++ b/src/lib/ABWXMLHelper.h @@ -50,9 +50,7 @@ private: }; // create an xmlTextReader pointer from a librevenge::RVNGInputStream pointer -// needs to be freed using xmlTextReaderFree function. - -xmlTextReaderPtr xmlReaderForStream(librevenge::RVNGInputStream *input, ABWXMLErrorWatcher *watcher = 0); +std::unique_ptr<xmlTextReader, void(*)(xmlTextReaderPtr)> xmlReaderForStream(librevenge::RVNGInputStream *input, ABWXMLErrorWatcher *watcher = 0); } // namespace libabw diff --git a/src/lib/AbiDocument.cpp b/src/lib/AbiDocument.cpp index 2228b70..116ab9b 100644 --- a/src/lib/AbiDocument.cpp +++ b/src/lib/AbiDocument.cpp @@ -7,8 +7,6 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#include <memory> - #include <libabw/libabw.h> #include "ABWXMLHelper.h" #include "ABWParser.h" @@ -50,11 +48,10 @@ ABWAPI bool libabw::AbiDocument::isFileFormatSupported(librevenge::RVNGInputStre ABW_DEBUG_MSG(("AbiDocument::isFileFormatSupported\n")); if (!input) return false; - std::unique_ptr<xmlTextReader, void (*)(xmlTextReaderPtr)> reader(nullptr, xmlFreeTextReader); input->seek(0, librevenge::RVNG_SEEK_SET); libabw::ABWZlibStream stream(input); stream.seek(0, librevenge::RVNG_SEEK_SET); - reader.reset(libabw::xmlReaderForStream(&stream)); + auto reader = libabw::xmlReaderForStream(&stream); if (!reader) return false; int ret = xmlTextReaderRead(reader.get()); |