The return value of config_key_get must be a variant
authorEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Thu, 26 Sep 2013 18:18:36 +0000 (15:18 -0300)
committerEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Thu, 26 Sep 2013 20:33:24 +0000 (17:33 -0300)
We have to use another iterator inside the reply to pack the actual value

Change-Id: I7f4547fb1de3450621aa332ad1caa80f287f7969
Signed-off-by: Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
src/wkb-ibus-config-key.c

index 9a125646b35250cfeb161ac3aeec161127312ce0..9b3d255efe6d8e0f25a896f9b0f7fd6df7c1f422 100644 (file)
@@ -240,9 +240,21 @@ wkb_config_key_set(struct wkb_config_key * key, Eldbus_Message_Iter *iter)
 Eina_Bool
 wkb_config_key_get(struct wkb_config_key *key, Eldbus_Message_Iter *reply)
 {
+   Eina_Bool ret = EINA_FALSE;
+   Eldbus_Message_Iter *value;
+
    if (!key->field || !key->get)
       return EINA_FALSE;
 
-   return key->get(key, reply);
+   value = eldbus_message_iter_container_new(reply, 'v', key->signature);
+
+   if (!(ret = key->get(key, value)))
+     {
+        printf("Unexpected error retrieving value for key: '%s'\n", key->id);
+     }
+
+   eldbus_message_iter_container_close(reply, value);
+
+   return ret;
 }