Commit 73028af8 by Patrick Steinhardt

khash: avoid using macro magic to get return address

parent 85d2748c
...@@ -209,7 +209,7 @@ int git_attr_foreach( ...@@ -209,7 +209,7 @@ int git_attr_foreach(
if (git_strmap_exists(seen, assign->name)) if (git_strmap_exists(seen, assign->name))
continue; continue;
git_strmap_insert(seen, assign->name, assign, error); git_strmap_insert(seen, assign->name, assign, &error);
if (error < 0) if (error < 0)
goto cleanup; goto cleanup;
......
...@@ -82,7 +82,7 @@ static int attr_cache_make_entry( ...@@ -82,7 +82,7 @@ static int attr_cache_make_entry(
&entry, git_repository_workdir(repo), path, &cache->pool); &entry, git_repository_workdir(repo), path, &cache->pool);
if (!error) { if (!error) {
git_strmap_insert(cache->files, entry->path, entry, error); git_strmap_insert(cache->files, entry->path, entry, &error);
if (error > 0) if (error > 0)
error = 0; error = 0;
} }
...@@ -435,7 +435,7 @@ int git_attr_cache__insert_macro(git_repository *repo, git_attr_rule *macro) ...@@ -435,7 +435,7 @@ int git_attr_cache__insert_macro(git_repository *repo, git_attr_rule *macro)
giterr_set(GITERR_OS, "unable to get attr cache lock"); giterr_set(GITERR_OS, "unable to get attr cache lock");
error = -1; error = -1;
} else { } else {
git_strmap_insert(macros, macro->match.pattern, macro, error); git_strmap_insert(macros, macro->match.pattern, macro, &error);
git_mutex_unlock(&cache->lock); git_mutex_unlock(&cache->lock);
} }
......
...@@ -199,7 +199,7 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry) ...@@ -199,7 +199,7 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
if (!git_oidmap_valid_index(cache->map, pos)) { if (!git_oidmap_valid_index(cache->map, pos)) {
int rval; int rval;
git_oidmap_insert(cache->map, &entry->oid, entry, rval); git_oidmap_insert(cache->map, &entry->oid, entry, &rval);
if (rval >= 0) { if (rval >= 0) {
git_cached_obj_incref(entry); git_cached_obj_incref(entry);
cache->used_memory += entry->size; cache->used_memory += entry->size;
......
...@@ -179,7 +179,7 @@ static int append_entry(git_strmap *values, cvar_t *var) ...@@ -179,7 +179,7 @@ static int append_entry(git_strmap *values, cvar_t *var)
pos = git_strmap_lookup_index(values, var->entry->name); pos = git_strmap_lookup_index(values, var->entry->name);
if (!git_strmap_valid_index(values, pos)) { if (!git_strmap_valid_index(values, pos)) {
git_strmap_insert(values, var->entry->name, var, error); git_strmap_insert(values, var->entry->name, var, &error);
} else { } else {
existing = git_strmap_value_at(values, pos); existing = git_strmap_value_at(values, pos);
while (existing->next != NULL) { while (existing->next != NULL) {
......
...@@ -127,7 +127,7 @@ static int add_to_known_names( ...@@ -127,7 +127,7 @@ static int add_to_known_names(
if (!found) { if (!found) {
int ret; int ret;
git_oidmap_insert(names, &e->peeled, e, ret); git_oidmap_insert(names, &e->peeled, e, &ret);
if (ret < 0) if (ret < 0)
return -1; return -1;
} }
......
...@@ -217,7 +217,7 @@ static int git_diff_driver_builtin( ...@@ -217,7 +217,7 @@ static int git_diff_driver_builtin(
goto done; goto done;
} }
git_strmap_insert(reg->drivers, drv->name, drv, error); git_strmap_insert(reg->drivers, drv->name, drv, &error);
if (error > 0) if (error > 0)
error = 0; error = 0;
...@@ -331,7 +331,7 @@ static int git_diff_driver_load( ...@@ -331,7 +331,7 @@ static int git_diff_driver_load(
goto done; goto done;
/* store driver in registry */ /* store driver in registry */
git_strmap_insert(reg->drivers, drv->name, drv, error); git_strmap_insert(reg->drivers, drv->name, drv, &error);
if (error < 0) if (error < 0)
goto done; goto done;
error = 0; error = 0;
......
...@@ -607,7 +607,7 @@ retry_lstat: ...@@ -607,7 +607,7 @@ retry_lstat:
memcpy(cache_path, make_path.ptr, make_path.size + 1); memcpy(cache_path, make_path.ptr, make_path.size + 1);
git_strmap_insert(opts->dir_map, cache_path, cache_path, error); git_strmap_insert(opts->dir_map, cache_path, cache_path, &error);
if (error < 0) if (error < 0)
goto done; goto done;
} }
......
...@@ -51,16 +51,16 @@ static kh_inline khint_t idxentry_hash(const git_index_entry *e) ...@@ -51,16 +51,16 @@ static kh_inline khint_t idxentry_hash(const git_index_entry *e)
((*(hp) = kh_init(idxicase)) == NULL) ? giterr_set_oom(), -1 : 0 ((*(hp) = kh_init(idxicase)) == NULL) ? giterr_set_oom(), -1 : 0
#define git_idxmap_insert(h, key, val, rval) do { \ #define git_idxmap_insert(h, key, val, rval) do { \
khiter_t __pos = kh_put(idx, h, key, &rval); \ khiter_t __pos = kh_put(idx, h, key, rval); \
if (rval >= 0) { \ if ((*rval) >= 0) { \
if (rval == 0) kh_key(h, __pos) = key; \ if ((*rval) == 0) kh_key(h, __pos) = key; \
kh_val(h, __pos) = val; \ kh_val(h, __pos) = val; \
} } while (0) } } while (0)
#define git_idxmap_icase_insert(h, key, val, rval) do { \ #define git_idxmap_icase_insert(h, key, val, rval) do { \
khiter_t __pos = kh_put(idxicase, h, key, &rval); \ khiter_t __pos = kh_put(idxicase, h, key, rval); \
if (rval >= 0) { \ if ((*rval) >= 0) { \
if (rval == 0) kh_key(h, __pos) = key; \ if ((*rval) == 0) kh_key(h, __pos) = key; \
kh_val(h, __pos) = val; \ kh_val(h, __pos) = val; \
} } while (0) } } while (0)
......
...@@ -1365,7 +1365,7 @@ static int index_insert( ...@@ -1365,7 +1365,7 @@ static int index_insert(
error = git_vector_insert_sorted(&index->entries, entry, index_no_dups); error = git_vector_insert_sorted(&index->entries, entry, index_no_dups);
if (error == 0) { if (error == 0) {
INSERT_IN_MAP(index, entry, error); INSERT_IN_MAP(index, entry, &error);
} }
} }
...@@ -1592,7 +1592,7 @@ int git_index__fill(git_index *index, const git_vector *source_entries) ...@@ -1592,7 +1592,7 @@ int git_index__fill(git_index *index, const git_vector *source_entries)
if ((ret = git_vector_insert(&index->entries, entry)) < 0) if ((ret = git_vector_insert(&index->entries, entry)) < 0)
break; break;
INSERT_IN_MAP(index, entry, ret); INSERT_IN_MAP(index, entry, &ret);
if (ret < 0) if (ret < 0)
break; break;
} }
...@@ -2499,7 +2499,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size) ...@@ -2499,7 +2499,7 @@ static int parse_index(git_index *index, const char *buffer, size_t buffer_size)
goto done; goto done;
} }
INSERT_IN_MAP(index, entry, error); INSERT_IN_MAP(index, entry, &error);
if (error < 0) { if (error < 0) {
index_entry_free(entry); index_entry_free(entry);
...@@ -2984,7 +2984,7 @@ int git_index_read_tree(git_index *index, const git_tree *tree) ...@@ -2984,7 +2984,7 @@ int git_index_read_tree(git_index *index, const git_tree *tree)
kh_resize(idx, entries_map, entries.length); kh_resize(idx, entries_map, entries.length);
git_vector_foreach(&entries, i, e) { git_vector_foreach(&entries, i, e) {
INSERT_IN_MAP_EX(index, entries_map, e, error); INSERT_IN_MAP_EX(index, entries_map, e, &error);
if (error < 0) { if (error < 0) {
giterr_set(GITERR_INDEX, "failed to insert entry into map"); giterr_set(GITERR_INDEX, "failed to insert entry into map");
...@@ -3103,7 +3103,7 @@ static int git_index_read_iterator( ...@@ -3103,7 +3103,7 @@ static int git_index_read_iterator(
if (add_entry) { if (add_entry) {
if ((error = git_vector_insert(&new_entries, add_entry)) == 0) if ((error = git_vector_insert(&new_entries, add_entry)) == 0)
INSERT_IN_MAP_EX(index, new_entries_map, add_entry, error); INSERT_IN_MAP_EX(index, new_entries_map, add_entry, &error);
} }
if (remove_entry && error >= 0) if (remove_entry && error >= 0)
......
...@@ -84,7 +84,7 @@ int git_mwindow_get_pack(struct git_pack_file **out, const char *path) ...@@ -84,7 +84,7 @@ int git_mwindow_get_pack(struct git_pack_file **out, const char *path)
git_atomic_inc(&pack->refcount); git_atomic_inc(&pack->refcount);
git_strmap_insert(git__pack_cache, pack->pack_name, pack, error); git_strmap_insert(git__pack_cache, pack->pack_name, pack, &error);
git_mutex_unlock(&git__mwindow_mutex); git_mutex_unlock(&git__mwindow_mutex);
if (error < 0) { if (error < 0) {
......
...@@ -41,9 +41,9 @@ typedef khash_t(off) git_offmap; ...@@ -41,9 +41,9 @@ typedef khash_t(off) git_offmap;
#define git_offmap_put(h, k, err) kh_put(off, h, k, err) #define git_offmap_put(h, k, err) kh_put(off, h, k, err)
#define git_offmap_insert(h, key, val, rval) do { \ #define git_offmap_insert(h, key, val, rval) do { \
khiter_t __pos = kh_put(off, h, key, &rval); \ khiter_t __pos = kh_put(off, h, key, rval); \
if (rval >= 0) { \ if ((*rval) >= 0) { \
if (rval == 0) kh_key(h, __pos) = key; \ if ((*rval) == 0) kh_key(h, __pos) = key; \
kh_val(h, __pos) = val; \ kh_val(h, __pos) = val; \
} } while (0) } } while (0)
......
...@@ -48,9 +48,9 @@ GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid) ...@@ -48,9 +48,9 @@ GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
#define git_oidmap_put(h, k, err) kh_put(oid, h, k, err) #define git_oidmap_put(h, k, err) kh_put(oid, h, k, err)
#define git_oidmap_insert(h, key, val, rval) do { \ #define git_oidmap_insert(h, key, val, rval) do { \
khiter_t __pos = kh_put(oid, h, key, &rval); \ khiter_t __pos = kh_put(oid, h, key, rval); \
if (rval >= 0) { \ if ((*rval) >= 0) { \
if (rval == 0) kh_key(h, __pos) = key; \ if ((*rval) == 0) kh_key(h, __pos) = key; \
kh_val(h, __pos) = val; \ kh_val(h, __pos) = val; \
} } while (0) } } while (0)
......
...@@ -1540,7 +1540,7 @@ static int retrieve_object(git_walk_object **out, git_packbuilder *pb, const git ...@@ -1540,7 +1540,7 @@ static int retrieve_object(git_walk_object **out, git_packbuilder *pb, const git
if ((error = lookup_walk_object(&obj, pb, id)) < 0) if ((error = lookup_walk_object(&obj, pb, id)) < 0)
return error; return error;
git_oidmap_insert(pb->walk_objects, &obj->id, obj, error); git_oidmap_insert(pb->walk_objects, &obj->id, obj, &error);
} }
*out = obj; *out = obj;
......
...@@ -46,9 +46,9 @@ typedef khiter_t git_strmap_iter; ...@@ -46,9 +46,9 @@ typedef khiter_t git_strmap_iter;
#define git_strmap_put(h, k, err) kh_put(str, h, k, err) #define git_strmap_put(h, k, err) kh_put(str, h, k, err)
#define git_strmap_insert(h, key, val, rval) do { \ #define git_strmap_insert(h, key, val, rval) do { \
khiter_t __pos = kh_put(str, h, key, &rval); \ khiter_t __pos = kh_put(str, h, key, rval); \
if (rval >= 0) { \ if ((*rval) >= 0) { \
if (rval == 0) kh_key(h, __pos) = key; \ if ((*rval) == 0) kh_key(h, __pos) = key; \
kh_val(h, __pos) = val; \ kh_val(h, __pos) = val; \
} } while (0) } } while (0)
......
...@@ -186,7 +186,7 @@ static int load_submodule_names(git_strmap *out, git_config *cfg) ...@@ -186,7 +186,7 @@ static int load_submodule_names(git_strmap *out, git_config *cfg)
ldot = strrchr(entry->name, '.'); ldot = strrchr(entry->name, '.');
git_buf_put(&buf, fdot + 1, ldot - fdot - 1); git_buf_put(&buf, fdot + 1, ldot - fdot - 1);
git_strmap_insert(out, entry->value, git_buf_detach(&buf), rval); git_strmap_insert(out, entry->value, git_buf_detach(&buf), &rval);
if (rval < 0) { if (rval < 0) {
giterr_set(GITERR_NOMEMORY, "error inserting submodule into hash table"); giterr_set(GITERR_NOMEMORY, "error inserting submodule into hash table");
return -1; return -1;
...@@ -1866,7 +1866,7 @@ static int submodule_load_each(const git_config_entry *entry, void *payload) ...@@ -1866,7 +1866,7 @@ static int submodule_load_each(const git_config_entry *entry, void *payload)
goto done; goto done;
} }
git_strmap_insert(map, sm->name, sm, error); git_strmap_insert(map, sm->name, sm, &error);
assert(error != 0); assert(error != 0);
if (error < 0) if (error < 0)
goto done; goto done;
......
...@@ -120,7 +120,7 @@ int git_transaction_lock_ref(git_transaction *tx, const char *refname) ...@@ -120,7 +120,7 @@ int git_transaction_lock_ref(git_transaction *tx, const char *refname)
if ((error = git_refdb_lock(&node->payload, tx->db, refname)) < 0) if ((error = git_refdb_lock(&node->payload, tx->db, refname)) < 0)
return error; return error;
git_strmap_insert(tx->locks, node->name, node, error); git_strmap_insert(tx->locks, node->name, node, &error);
if (error < 0) if (error < 0)
goto cleanup; goto cleanup;
......
...@@ -505,7 +505,7 @@ static int append_entry( ...@@ -505,7 +505,7 @@ static int append_entry(
entry->attr = (uint16_t)filemode; entry->attr = (uint16_t)filemode;
git_strmap_insert(bld->map, entry->filename, entry, error); git_strmap_insert(bld->map, entry->filename, entry, &error);
if (error < 0) { if (error < 0) {
git_tree_entry_free(entry); git_tree_entry_free(entry);
giterr_set(GITERR_TREE, "failed to append entry %s to the tree builder", filename); giterr_set(GITERR_TREE, "failed to append entry %s to the tree builder", filename);
...@@ -754,7 +754,7 @@ int git_treebuilder_insert( ...@@ -754,7 +754,7 @@ int git_treebuilder_insert(
entry = alloc_entry(filename, strlen(filename), id); entry = alloc_entry(filename, strlen(filename), id);
GITERR_CHECK_ALLOC(entry); GITERR_CHECK_ALLOC(entry);
git_strmap_insert(bld->map, entry->filename, entry, error); git_strmap_insert(bld->map, entry->filename, entry, &error);
if (error < 0) { if (error < 0) {
git_tree_entry_free(entry); git_tree_entry_free(entry);
......
...@@ -36,7 +36,7 @@ static void insert_strings(git_strmap *table, int count) ...@@ -36,7 +36,7 @@ static void insert_strings(git_strmap *table, int count)
for (j = 0, over = i / 26; over > 0; j++, over = over / 26) for (j = 0, over = i / 26; over > 0; j++, over = over / 26)
str[j] = 'A' + (over % 26); str[j] = 'A' + (over % 26);
git_strmap_insert(table, str, str, err); git_strmap_insert(table, str, str, &err);
cl_assert(err >= 0); cl_assert(err >= 0);
} }
......
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