From: <svn...@op...> - 2009-02-25 15:23:25
|
Author: bellmich Date: Wed Feb 25 16:23:18 2009 New Revision: 952 URL: http://libsyncml.opensync.org/changeset/952 Log: added calls to smlLibxmlRef and smlLibxmlUnref to handle libxml init and cleanup Modified: trunk/libsyncml/parser/sml_xml_assm.c trunk/libsyncml/parser/sml_xml_parse.c Modified: trunk/libsyncml/parser/sml_xml_assm.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_assm.c Wed Feb 25 16:22:25 2009 (r951) +++ trunk/libsyncml/parser/sml_xml_assm.c Wed Feb 25 16:23:18 2009 (r952) @@ -1504,6 +1504,8 @@ g_mutex_free(assm->mutex); smlSafeFree((gpointer *)&assm); + smlLibxmlUnref(); + smlTrace(TRACE_EXIT, "%s", __func__); } @@ -1958,6 +1960,8 @@ functions->flush = (SmlAssemblerFlushFunction)smlXmlAssemblerFlush; functions->restore_cmds = (SmlAssemblerRestoreCommandsFunction)smlXmlAssemblerRestoreCommands; + smlLibxmlRef(); + smlTrace(TRACE_EXIT, "%s: %p", __func__, assm); return assm; @@ -2400,6 +2404,8 @@ if (version == SML_DEVINF_VERSION_UNKNOWN) version = devinf->version; smlAssert(devinf->version == version); + + smlLibxmlRef(); SmlXmlAssembler *assm = smlTryMalloc0(sizeof(SmlXmlAssembler), error); if (!assm) @@ -2553,6 +2559,8 @@ xmlBufferFree(buffer); smlSafeFree((gpointer *)&assm); + + smlLibxmlUnref(); smlTrace(TRACE_INTERNAL, "Message Assembled: %s", *data); @@ -2567,6 +2575,7 @@ error_free_assm: smlSafeFree((gpointer *)&assm); error: + smlLibxmlUnref(); g_warning("%s: %s", __func__, smlErrorPrint(error)); smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); return FALSE; Modified: trunk/libsyncml/parser/sml_xml_parse.c ============================================================================== --- trunk/libsyncml/parser/sml_xml_parse.c Wed Feb 25 16:22:25 2009 (r951) +++ trunk/libsyncml/parser/sml_xml_parse.c Wed Feb 25 16:23:18 2009 (r952) @@ -1904,6 +1904,7 @@ parser->got_command = FALSE; /* Create the new parser */ + smlLibxmlRef(); parser->reader = xmlReaderForMemory(parser->data, parser->size, "/", NULL, XML_PARSE_NONET | XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NOCDATA); if (!parser->reader) { smlErrorSet(error, SML_ERROR_GENERIC, "Unable to create new reader"); @@ -1924,6 +1925,7 @@ error_free_reader: xmlFreeTextReader(parser->reader); + smlLibxmlUnref(); error: parser->reader = NULL; if (parser->data) @@ -1983,6 +1985,7 @@ goto error; xmlFreeTextReader(parser->reader); + smlLibxmlUnref(); parser->reader = NULL; parser->size = 0; smlSafeCFree(&(parser->data)); @@ -2000,13 +2003,13 @@ smlTrace(TRACE_ENTRY, "%s(%p)", __func__, parser); smlAssert(parser); - if (parser->reader) + if (parser->reader) { xmlFreeTextReader(parser->reader); + smlLibxmlUnref(); + } if (parser->data) smlSafeCFree(&(parser->data)); - //xmlCleanupParser(); - smlSafeFree((gpointer *)&parser); smlTrace(TRACE_EXIT, "%s", __func__); @@ -3277,6 +3280,7 @@ goto error; /* Create the new parser */ + smlLibxmlRef(); parser->reader = xmlReaderForMemory(data, size, "/", NULL, XML_PARSE_NONET | XML_PARSE_NOERROR | XML_PARSE_NOWARNING | XML_PARSE_NOCDATA | XML_PARSER_SUBST_ENTITIES); if (!parser->reader) { smlErrorSet(error, SML_ERROR_GENERIC, "Unable to create new reader"); @@ -3449,6 +3453,7 @@ xmlFreeTextReader(parser->reader); parser->reader = NULL; + smlLibxmlUnref(); smlSafeFree((gpointer *)&parser); smlTrace(TRACE_EXIT, "%s", __func__); @@ -3458,6 +3463,7 @@ if (parser && parser->reader) { xmlFreeTextReader(parser->reader); parser->reader = NULL; + smlLibxmlUnref(); } if (parser) smlSafeFree((gpointer *)&parser); |