PLIST_API void plist_cleanup(void) { /* free memory from parser initialization */ xmlCleanupCharEncodingHandlers(); xmlDictCleanup(); xmlResetLastError(); xmlCleanupGlobals(); xmlCleanupThreads(); xmlCleanupMemory(); }
/** @brief Destroy a transport_session and close its socket, without disconnecting from Jabber. @param session Pointer to the transport_session to be destroyed. @return 1 if successful, or 0 if not. This function may be called from a child process in order to free resources associated with the parent's transport_session, but without sending a disconnect to Jabber (since that would disconnect the parent). The only error condition is a NULL pointer argument. */ int session_discard( transport_session* session ) { if( ! session ) return 0; if(session->sock_mgr) socket_manager_free(session->sock_mgr); if( session->state_machine ) free( session->state_machine ); if( session->parser_ctxt) { xmlFreeDoc( session->parser_ctxt->myDoc ); xmlFreeParserCtxt(session->parser_ctxt); } xmlCleanupCharEncodingHandlers(); xmlDictCleanup(); xmlCleanupParser(); buffer_free(session->body_buffer); buffer_free(session->subject_buffer); buffer_free(session->thread_buffer); buffer_free(session->from_buffer); buffer_free(session->recipient_buffer); buffer_free(session->status_buffer); buffer_free(session->message_error_type); buffer_free(session->router_to_buffer); buffer_free(session->router_from_buffer); buffer_free(session->osrf_xid_buffer); buffer_free(session->router_class_buffer); buffer_free(session->router_command_buffer); buffer_free(session->session_id); free(session->server); free(session->unix_path); free( session ); return 1; }
jsonObject* jsonXMLToJSONObject(const char* xml) { osrfXMLGatewayParser parser; /* don't define freeItem, since objects will be cleaned by freeing the parent */ parser.objStack = osrfNewList(); /* don't define freeItem, since the list eill end up empty if there are no errors*/ parser.keyStack = osrfNewList(); parser.obj = NULL; parser.inString = 0; parser.inNumber = 0; xmlParserCtxtPtr ctxt = xmlCreatePushParserCtxt(SAXHandler, &parser, "", 0, NULL); xmlParseChunk(ctxt, xml, strlen(xml), 1); osrfListFree(parser.objStack); osrfListFree(parser.keyStack); xmlFreeParserCtxt(ctxt); xmlCleanupCharEncodingHandlers(); xmlDictCleanup(); xmlCleanupParser(); return parser.obj; }