location-geoclue: Fix crash when starting geoclue provider. (Thanks to Maks Verver)

This commit is contained in:
Jon Lund Steffensen
2013-10-21 15:44:51 -04:00
parent 95d8a3f760
commit 978f4acde2
+7 -7
View File
@@ -54,14 +54,16 @@ location_geoclue_start(location_geoclue_state_t *state)
state->position = geoclue_position_new(state->provider, state->position = geoclue_position_new(state->provider,
state->provider_path); state->provider_path);
} else { } else {
GError *error = NULL;
GeoclueMaster *master = geoclue_master_get_default(); GeoclueMaster *master = geoclue_master_get_default();
GeoclueMasterClient *client = geoclue_master_create_client(master, GeoclueMasterClient *client = geoclue_master_create_client(master,
NULL, NULL); NULL, &error);
GError *error = NULL; g_object_unref(master);
if (client == NULL) { if (client == NULL) {
g_printerr(_("Unable to obtain master client.\n")); g_printerr(_("Unable to obtain master client: %s\n"),
g_object_unref(master); error->message);
g_error_free(error);
return -1; return -1;
} }
@@ -70,11 +72,10 @@ location_geoclue_start(location_geoclue_state_t *state)
0, FALSE, 0, FALSE,
GEOCLUE_RESOURCE_NETWORK, GEOCLUE_RESOURCE_NETWORK,
&error)) { &error)) {
g_printerr(_("Can't set requirements for master: %s"), g_printerr(_("Can't set requirements for master: %s\n"),
error->message); error->message);
g_error_free(error); g_error_free(error);
g_object_unref(client); g_object_unref(client);
g_object_unref(master);
return -1; return -1;
} }
@@ -82,7 +83,6 @@ location_geoclue_start(location_geoclue_state_t *state)
state->position = geoclue_master_client_create_position(client, NULL); state->position = geoclue_master_client_create_position(client, NULL);
g_object_unref(client); g_object_unref(client);
g_object_unref(master);
} }
gchar *name = NULL; gchar *name = NULL;