Make refcounted returns move consistent.

This commit is contained in:
2018-05-14 18:34:30 -07:00
parent c3f413d087
commit df50579b5c
4 changed files with 13 additions and 18 deletions

View File

@@ -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 &current->ref;
libab_ref_copy(&current->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);
}

View File

@@ -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) {