summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Tardon <dtardon@redhat.com>2017-04-20 16:02:50 +0200
committerDavid Tardon <dtardon@redhat.com>2017-04-20 16:12:25 +0200
commit208e6eec8535ba20c7b2afdd9f1f07083c99f195 (patch)
tree0b8a713cdec6e46921ba619b589743fbdbe42043
parent442b4812cf058481e00c186ef738c990e1a50284 (diff)
move cleanup of xmlTextReaderPtr to a single place
Change-Id: Idf32d2f27b7c97276e57e05a60270778ed92f611
-rw-r--r--src/lib/ABWParser.cpp2
-rw-r--r--src/lib/ABWXMLHelper.cpp10
-rw-r--r--src/lib/ABWXMLHelper.h4
-rw-r--r--src/lib/AbiDocument.cpp5
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());