Make refcounted returns move consistent.
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
#include <stdlib.h>
|
||||
|
||||
void libab_ref_trie_init(libab_ref_trie* trie) {
|
||||
libab_ref_null(&trie->null_ref);
|
||||
trie->head = NULL;
|
||||
}
|
||||
|
||||
@@ -116,8 +115,8 @@ libab_result libab_ref_trie_put(libab_ref_trie* trie, const char* key,
|
||||
return result;
|
||||
}
|
||||
|
||||
const libab_ref* libab_ref_trie_get(const libab_ref_trie* trie,
|
||||
const char* key) {
|
||||
void libab_ref_trie_get(const libab_ref_trie* trie,
|
||||
const char* key, libab_ref* into) {
|
||||
libab_ref_trie_node* current = trie->head;
|
||||
while (current && *key) {
|
||||
while (current && current->key != *key) {
|
||||
@@ -130,13 +129,13 @@ const libab_ref* libab_ref_trie_get(const libab_ref_trie* trie,
|
||||
current = current->child;
|
||||
key++;
|
||||
} else {
|
||||
return ¤t->ref;
|
||||
libab_ref_copy(¤t->ref, into);
|
||||
return;
|
||||
}
|
||||
}
|
||||
return &trie->null_ref;
|
||||
libab_ref_null(into);
|
||||
}
|
||||
|
||||
void libab_ref_trie_free(libab_ref_trie* trie) {
|
||||
_libab_ref_trie_free(trie->head);
|
||||
libab_ref_free(&trie->null_ref);
|
||||
}
|
||||
|
||||
@@ -50,12 +50,12 @@ libab_result libab_ref_vec_insert_value(libab_ref_vec* vec, void* data,
|
||||
return result;
|
||||
}
|
||||
|
||||
const libab_ref* libab_ref_vec_index(libab_ref_vec* vec, size_t index) {
|
||||
const libab_ref* to_return = NULL;
|
||||
void libab_ref_vec_index(libab_ref_vec* vec, size_t index, libab_ref* into) {
|
||||
if (index < vec->size) {
|
||||
to_return = &vec->data[index];
|
||||
libab_ref_copy(&vec->data[index], into);
|
||||
} else {
|
||||
libab_ref_null(into);
|
||||
}
|
||||
return to_return;
|
||||
}
|
||||
|
||||
void libab_ref_vec_free(libab_ref_vec* vec) {
|
||||
|
||||
Reference in New Issue
Block a user