aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Morgado <aleksander@lanedo.com>2013-07-18 23:03:22 +0200
committerAleksander Morgado <aleksander@lanedo.com>2013-08-21 12:34:54 +0200
commit564e0fd94bd2bb451812e4218d64f28368a2411a (patch)
tree0558c019e935728052d2903ef652559e28ecccdf
parent0502646f9f68a37b00066247beb856bc781c6afa (diff)
libmm-glib,signal: don't create a 'MMSignal' with an empty dictionary
-rw-r--r--libmm-glib/mm-signal.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/libmm-glib/mm-signal.c b/libmm-glib/mm-signal.c
index b93e0bb4..57baf5d7 100644
--- a/libmm-glib/mm-signal.c
+++ b/libmm-glib/mm-signal.c
@@ -371,7 +371,7 @@ mm_signal_new_from_dictionary (GVariant *dictionary,
GVariantIter iter;
gchar *key;
GVariant *value;
- MMSignal *self;
+ MMSignal *self = NULL;
if (!dictionary) {
g_set_error (error,
@@ -390,10 +390,10 @@ mm_signal_new_from_dictionary (GVariant *dictionary,
return NULL;
}
- self = mm_signal_new ();
g_variant_iter_init (&iter, dictionary);
- while (!inner_error &&
- g_variant_iter_next (&iter, "{sv}", &key, &value)) {
+ while (!inner_error && g_variant_iter_next (&iter, "{sv}", &key, &value)) {
+ if (!self)
+ self = mm_signal_new ();
consume_variant (self,
key,
value,
@@ -405,8 +405,7 @@ mm_signal_new_from_dictionary (GVariant *dictionary,
/* If error, destroy the object */
if (inner_error) {
g_propagate_error (error, inner_error);
- g_object_unref (self);
- return NULL;
+ g_clear_object (&self);
}
return self;