config: don't shutdown the libhal ctx if it failed to initialize (#23213)
Regression introduced by b1c3dc6ae2
.
Shutting down the libhal_ctx if the init failed may cause an abort.
This can happen if hald is not yet running at server startup.
X.Org Bug 23213 <http://bugs.freedesktop.org/show_bug.cgi?id=23213>
Tested-by: Stefan Dirsch
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
parent
1545a120df
commit
49046088f1
11
config/hal.c
11
config/hal.c
|
@ -489,13 +489,13 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
|
||||||
|
|
||||||
if (!libhal_ctx_set_dbus_connection(info->hal_ctx, info->system_bus)) {
|
if (!libhal_ctx_set_dbus_connection(info->hal_ctx, info->system_bus)) {
|
||||||
LogMessage(X_ERROR, "config/hal: couldn't associate HAL context with bus\n");
|
LogMessage(X_ERROR, "config/hal: couldn't associate HAL context with bus\n");
|
||||||
goto out_ctx;
|
goto out_err;
|
||||||
}
|
}
|
||||||
if (!libhal_ctx_init(info->hal_ctx, &error)) {
|
if (!libhal_ctx_init(info->hal_ctx, &error)) {
|
||||||
LogMessage(X_ERROR, "config/hal: couldn't initialise context: %s (%s)\n",
|
LogMessage(X_ERROR, "config/hal: couldn't initialise context: %s (%s)\n",
|
||||||
error.name ? error.name : "unknown error",
|
error.name ? error.name : "unknown error",
|
||||||
error.message ? error.message : "null");
|
error.message ? error.message : "null");
|
||||||
goto out_ctx;
|
goto out_err;
|
||||||
}
|
}
|
||||||
if (!libhal_device_property_watch_all(info->hal_ctx, &error)) {
|
if (!libhal_device_property_watch_all(info->hal_ctx, &error)) {
|
||||||
LogMessage(X_ERROR, "config/hal: couldn't watch all properties: %s (%s)\n",
|
LogMessage(X_ERROR, "config/hal: couldn't watch all properties: %s (%s)\n",
|
||||||
|
@ -526,19 +526,20 @@ connect_and_register(DBusConnection *connection, struct config_hal_info *info)
|
||||||
out_ctx:
|
out_ctx:
|
||||||
dbus_error_free(&error);
|
dbus_error_free(&error);
|
||||||
|
|
||||||
if (info->hal_ctx) {
|
|
||||||
if (!libhal_ctx_shutdown(info->hal_ctx, &error)) {
|
if (!libhal_ctx_shutdown(info->hal_ctx, &error)) {
|
||||||
LogMessage(X_WARNING, "config/hal: couldn't shut down context: %s (%s)\n",
|
LogMessage(X_WARNING, "config/hal: couldn't shut down context: %s (%s)\n",
|
||||||
error.name ? error.name : "unknown error",
|
error.name ? error.name : "unknown error",
|
||||||
error.message ? error.message : "null");
|
error.message ? error.message : "null");
|
||||||
dbus_error_free(&error);
|
dbus_error_free(&error);
|
||||||
}
|
}
|
||||||
libhal_ctx_free(info->hal_ctx);
|
|
||||||
}
|
|
||||||
|
|
||||||
out_err:
|
out_err:
|
||||||
dbus_error_free(&error);
|
dbus_error_free(&error);
|
||||||
|
|
||||||
|
if (info->hal_ctx) {
|
||||||
|
libhal_ctx_free(info->hal_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
info->hal_ctx = NULL;
|
info->hal_ctx = NULL;
|
||||||
info->system_bus = NULL;
|
info->system_bus = NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user