Fix set_value for string_list keys
authorEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Tue, 28 Oct 2014 19:34:15 +0000 (17:34 -0200)
committerEduardo Lima (Etrunko) <eduardo.lima@intel.com>
Tue, 28 Oct 2014 19:34:15 +0000 (17:34 -0200)
Change-Id: I4b0478cb1adc9d6f17a0378fa9230c0db7e67def
Signed-off-by: Eduardo Lima (Etrunko) <eduardo.lima@intel.com>
src/wkb-ibus-config-eet.c
src/wkb-ibus-config-key.c

index dbcee54f8ff0d897c0d5a00c62430a898470feef..b18d74b7f056182a51a761bfc3af3eef8711f3ed 100644 (file)
@@ -925,7 +925,7 @@ _config_eet_value_changed(struct wkb_ibus_config_eet *config_eet, struct wkb_con
               array = eldbus_message_iter_container_new(value, 'a', "s");
 
               for (s = slist; *s != NULL; ++s)
-                 eldbus_message_iter_arguments_append(array, "s", s);
+                 eldbus_message_iter_arguments_append(array, "s", *s);
 
               eldbus_message_iter_container_close(value, array);
 
index 78a2db2272eceb62eddc720f0d584ada317745e3..f29db1ed0c7349c7dba1b6fdaf1a4d4d9d0d7986 100644 (file)
@@ -159,9 +159,16 @@ _key_string_list_set(struct wkb_config_key *key, Eldbus_Message_Iter *iter)
    const char *str;
    Eina_List *list = NULL;
    Eina_List **field;
+   Eldbus_Message_Iter *array = NULL;
 
-   while (iter && eldbus_message_iter_get_and_next(iter, 's', &str))
-      list = eina_list_append(list,eina_stringshare_add(str));
+   if (!eldbus_message_iter_arguments_get(iter, "as", &array))
+     {
+        ERR("Expecting 'as' got '%s'", eldbus_message_iter_signature_get(iter));
+        return EINA_FALSE;
+     }
+
+   while (eldbus_message_iter_get_and_next(array, 's', &str))
+      list = eina_list_append(list, eina_stringshare_add(str));
 
    if ((field = (Eina_List **) key->field))
       _key_string_list_free(field);