From 3abcc7d28d73559c1f6d585c619c7298ff79101e Mon Sep 17 00:00:00 2001 From: Olivier Andrieu Date: Sat, 31 Jul 2004 18:28:10 +0000 Subject: * bus/config-parser.c (bus_config_parser_new): fix an invalid _unref in the SELinux support. * doc/busconfig.dtd: update DTD for SELinux support. * bus/config-loader-libxml.c: fix error handler and parser initialisation/cleanup. OOM test now works with libxml2 HEAD. * configure.in: remove the warning about libxml2 * dbus/dbus-bus.c: silence doxygen warning. --- bus/config-loader-libxml.c | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) (limited to 'bus/config-loader-libxml.c') diff --git a/bus/config-loader-libxml.c b/bus/config-loader-libxml.c index a1b8f838..51ee1e59 100644 --- a/bus/config-loader-libxml.c +++ b/bus/config-loader-libxml.c @@ -122,13 +122,12 @@ xml_text_reader_error (void *arg, xmlErrorPtr xml_error) xml_error->code, xml_error->message); #endif - if (!dbus_error_is_set (error) && - (xml_error->level == XML_ERR_ERROR || - xml_error->level == XML_ERR_FATAL)) + if (!dbus_error_is_set (error)) { - if (xml_error->code != XML_ERR_NO_MEMORY) + if (xml_error->code == XML_ERR_NO_MEMORY) _DBUS_SET_OOM (error); - else + else if (xml_error->level == XML_ERR_ERROR || + xml_error->level == XML_ERR_FATAL) dbus_set_error (error, DBUS_ERROR_FAILED, "Error loading config file: '%s'", xml_error->message); @@ -146,7 +145,6 @@ bus_config_load (const DBusString *file, xmlTextReader *reader; BusConfigParser *parser; DBusString dirname, data; - const char *data_str; DBusError tmp_error; int ret; @@ -155,17 +153,6 @@ bus_config_load (const DBusString *file, parser = NULL; reader = NULL; - if (is_toplevel) - { - /* xmlMemSetup only fails if one of the functions is NULL */ - xmlMemSetup (dbus_free, - dbus_malloc, - dbus_realloc, - _dbus_strdup); - xmlInitParser (); - xmlSetGenericErrorFunc (NULL, xml_shut_up); - } - if (!_dbus_string_init (&dirname)) { _DBUS_SET_OOM (error); @@ -179,6 +166,17 @@ bus_config_load (const DBusString *file, return NULL; } + if (is_toplevel) + { + /* xmlMemSetup only fails if one of the functions is NULL */ + xmlMemSetup (dbus_free, + dbus_malloc, + dbus_realloc, + _dbus_strdup); + xmlInitParser (); + xmlSetGenericErrorFunc (NULL, xml_shut_up); + } + if (!_dbus_string_get_dirname (file, &dirname)) { _DBUS_SET_OOM (error); @@ -195,9 +193,8 @@ bus_config_load (const DBusString *file, if (!_dbus_file_get_contents (&data, file, error)) goto failed; - data_str = _dbus_string_get_const_data (&data); - - reader = xmlReaderForMemory (data_str, _dbus_string_get_length (&data), + reader = xmlReaderForMemory (_dbus_string_get_const_data (&data), + _dbus_string_get_length (&data), NULL, NULL, 0); if (reader == NULL) { @@ -295,8 +292,6 @@ bus_config_load (const DBusString *file, reader_out: xmlFreeTextReader (reader); - if (is_toplevel) - xmlCleanupParser(); reader = NULL; if (dbus_error_is_set (&tmp_error)) { @@ -308,6 +303,8 @@ bus_config_load (const DBusString *file, goto failed; _dbus_string_free (&dirname); _dbus_string_free (&data); + if (is_toplevel) + xmlCleanupParser(); _DBUS_ASSERT_ERROR_IS_CLEAR (error); return parser; @@ -315,6 +312,8 @@ bus_config_load (const DBusString *file, _DBUS_ASSERT_ERROR_IS_SET (error); _dbus_string_free (&dirname); _dbus_string_free (&data); + if (is_toplevel) + xmlCleanupParser(); if (parser) bus_config_parser_unref (parser); _dbus_assert (reader == NULL); /* must go to reader_out first */ -- cgit