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) ...@@ -264,24 +264,33 @@ void plist_dict_new_iter(plist_t node, plist_dict_iter *iter)
{ {
if (iter && *iter == NULL) { if (iter && *iter == NULL) {
*iter = malloc(sizeof(uint32_t)); *iter = malloc(sizeof(uint32_t));
*(uint32_t*)*iter = 0; *((uint32_t*)(*iter)) = 0;
} }
return; return;
} }
void plist_dict_next_item(plist_t node, plist_dict_iter iter, char **key, plist_t *val) 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) { 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) { 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; 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