summaryrefslogtreecommitdiffstats
path: root/dhash
diff options
context:
space:
mode:
Diffstat (limited to 'dhash')
-rw-r--r--dhash/dhash.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/dhash/dhash.c b/dhash/dhash.c
index 79f9c38..efd7c8d 100644
--- a/dhash/dhash.c
+++ b/dhash/dhash.c
@@ -888,12 +888,17 @@ int hash_get_default(hash_table_t *table, hash_key_t *key, hash_value_t *value,
if (!table) return HASH_ERROR_BAD_TABLE;
- if ((error = hash_lookup(table, key, value)) != HASH_SUCCESS) {
- if ((error = hash_enter(table, key, default_value)) != HASH_SUCCESS) {
+ error = hash_lookup(table, key, value);
+ if (error == HASH_ERROR_KEY_NOT_FOUND) {
+
+ error = hash_enter(table, key, default_value);
+ if (error != HASH_SUCCESS) {
return error;
}
*value = *default_value;
return HASH_SUCCESS;
+ } else {
+ if (error != HASH_SUCCESS) return error;
}
return HASH_SUCCESS;