GSList *data = NULL, item; for (item = g_slist_first(setting->value.value.as_list); item; item = item->next) { switch (setting->info.for_list.list_of_type) { case BERYL_SETTING_TYPE_STRING: { gchar * utf8 = g_locale_to_utf8(((BerylSettingValue *)item->data)->value.as_string, -1, NULL, NULL, NULL); data = g_slist_append(data, utf8); g_free(utf8); break; } default: break; }; };