Commit 5a7a91d4 authored by Jonathan Beck's avatar Jonathan Beck

Fix dict iteration.

parent f8ba9f02
......@@ -264,24 +264,33 @@ void plist_dict_new_iter(plist_t node, plist_dict_iter *iter)
{
if (iter && *iter == NULL) {
*iter = malloc(sizeof(uint32_t));
*(uint32_t*)*iter = 0;
*((uint32_t*)(*iter)) = 0;
}
return;
}
void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val)
{
if (node && PLIST_DICT == plist_get_node_type(node) && *(uint32_t*)iter < g_node_n_children(node) / 2) {
uint32_t* iter_int = (uint32_t*) iter;
if (key) {
*key = NULL;
}
if (val) {
*val = NULL;
}
if (node && PLIST_DICT == plist_get_node_type(node) && *iter_int < g_node_n_children(node)) {
if (key) {
plist_get_key_val((plist_t)g_node_nth_child(node, 2 * (*(uint32_t*)iter)), key);
plist_get_key_val((plist_t)g_node_nth_child(node, *iter_int), key);
}
if (val) {
*val = (plist_t) g_node_nth_child(node, 2 * (*(uint32_t*)iter) + 1);
*val = (plist_t) g_node_nth_child(node, *iter_int + 1);
}
*(uint32_t*)iter += 2;
*iter_int += 2;
}
return;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment