From 6ab7e301f1854fd18891ddfeaa64e7485be990ba Mon Sep 17 00:00:00 2001 From: Frederik Carlier Date: Sat, 26 Mar 2016 15:30:28 +0100 Subject: Move libxml cleanup code to a plist_cleanup method --- include/plist/plist.h | 13 +++++++++++++ src/plist.c | 18 ++++++++++++++++++ src/xplist.c | 17 ----------------- 3 files changed, 31 insertions(+), 17 deletions(-) diff --git a/include/plist/plist.h b/include/plist/plist.h index c66545a..acd1c4d 100644 --- a/include/plist/plist.h +++ b/include/plist/plist.h @@ -111,6 +111,19 @@ extern "C" } plist_type; + /******************************************** + * * + * Library Initialization & Cleanup * + * * + ********************************************/ + + /** + * Frees memory used globally by listplist, in + * particular the libxml parser + */ + + void plist_cleanup(void); + /******************************************** * * * Creation & Destruction * diff --git a/src/plist.c b/src/plist.c index d40b946..569251b 100644 --- a/src/plist.c +++ b/src/plist.c @@ -31,6 +31,24 @@ #include #include +#include +#include +#include +#include +#include +#include + +void plist_cleanup(void) +{ + /* free memory from parser initialization */ + xmlCleanupCharEncodingHandlers(); + xmlDictCleanup(); + xmlResetLastError(); + xmlCleanupGlobals(); + xmlCleanupThreads(); + xmlCleanupMemory(); +} + plist_t plist_new_node(plist_data_t data) { return (plist_t) node_create(NULL, data); diff --git a/src/xplist.c b/src/xplist.c index 09c1a11..e0a76da 100644 --- a/src/xplist.c +++ b/src/xplist.c @@ -573,15 +573,6 @@ PLIST_API void plist_to_xml(plist_t plist, char **plist_xml, uint32_t * length) tmp = NULL; } xmlFreeDoc(plist_doc); - - - /* free memory from parser initialization */ - xmlCleanupCharEncodingHandlers(); - xmlDictCleanup(); - xmlResetLastError(); - xmlCleanupGlobals(); - xmlCleanupThreads(); - xmlCleanupMemory(); } static xmlParserInputPtr plist_xml_external_entity_loader(const char *URL, const char *ID, xmlParserCtxtPtr ctxt) @@ -602,12 +593,4 @@ PLIST_API void plist_from_xml(const char *plist_xml, uint32_t length, plist_t * xml_to_node(root_node, plist); xmlFreeDoc(plist_doc); } - - /* free memory from parser initialization */ - xmlCleanupCharEncodingHandlers(); - xmlDictCleanup(); - xmlResetLastError(); - xmlCleanupGlobals(); - xmlCleanupThreads(); - xmlCleanupMemory(); } -- cgit v1.1-32-gdbae