diff --git a/library/tries.yap b/library/tries.yap index e57a7d081..096cbfa4a 100644 --- a/library/tries.yap +++ b/library/tries.yap @@ -50,5 +50,4 @@ trie_dup(Trie, CopyTrie) :- trie_join(CopyTrie, Trie). trie_traverse(Trie, Ref) :- - trie_get_first_entry(Trie, InitRef), - (Ref = InitRef ; trie_traverse(Trie, InitRef, Ref)). + trie_traverse(Trie, 0, Ref). diff --git a/library/tries/base_tries.c b/library/tries/base_tries.c index 115dd5ec9..36c90e12b 100644 --- a/library/tries/base_tries.c +++ b/library/tries/base_tries.c @@ -189,7 +189,11 @@ inline TrData trie_traverse_init(TrEntry trie, TrData init_data) { TrData data; - data = TrData_next(init_data); + if (init_data) { + data = TrData_next(init_data); + } else { + data = TrEntry_first_data(trie); + } TrEntry_traverse_data(trie) = data; return data; }