config/dbus: properly initialise vtable

Properly initialise the vtable, so we don't end up with an unregister_function
pointing to god knows where.
This commit is contained in:
Daniel Stone 2006-10-16 23:48:09 +03:00 committed by Daniel Stone
parent 85ac2f16ab
commit 205c6788d7

View File

@ -251,7 +251,7 @@ configInitialise()
{ {
DBusConnection *bus = NULL; DBusConnection *bus = NULL;
DBusError error; DBusError error;
DBusObjectPathVTable vtable; DBusObjectPathVTable vtable = { .message_function = configMessage };
configConnection = NULL; configConnection = NULL;
@ -294,7 +294,6 @@ configInitialise()
return; return;
} }
vtable.message_function = configMessage;
snprintf(busobject, sizeof(busobject), "/org/x/config/%d", atoi(display)); snprintf(busobject, sizeof(busobject), "/org/x/config/%d", atoi(display));
if (!dbus_connection_register_object_path(bus, busobject, &vtable, bus)) { if (!dbus_connection_register_object_path(bus, busobject, &vtable, bus)) {
configfd = -1; configfd = -1;
@ -319,10 +318,7 @@ configFini()
if (configConnection) { if (configConnection) {
dbus_error_init(&error); dbus_error_init(&error);
/* This causes a segfault inside libdbus. Sigh. */
#if 0
dbus_connection_unregister_object_path(configConnection, busobject); dbus_connection_unregister_object_path(configConnection, busobject);
#endif
dbus_bus_remove_match(configConnection, MATCH_RULE, &error); dbus_bus_remove_match(configConnection, MATCH_RULE, &error);
dbus_bus_release_name(configConnection, busname, &error); dbus_bus_release_name(configConnection, busname, &error);
dbus_connection_unref(configConnection); dbus_connection_unref(configConnection);