Commit 64e46dc3 by Patrick Steinhardt

khash: avoid using `kh_end` directly

parent 036daa59
...@@ -125,7 +125,7 @@ static void cache_evict_entries(git_cache *cache) ...@@ -125,7 +125,7 @@ static void cache_evict_entries(git_cache *cache)
} }
while (evict_count > 0) { while (evict_count > 0) {
khiter_t pos = seed++ % kh_end(cache->map); khiter_t pos = seed++ % git_oidmap_end(cache->map);
if (kh_exist(cache->map, pos)) { if (kh_exist(cache->map, pos)) {
git_cached_obj *evict = kh_val(cache->map, pos); git_cached_obj *evict = kh_val(cache->map, pos);
...@@ -157,7 +157,7 @@ static void *cache_get(git_cache *cache, const git_oid *oid, unsigned int flags) ...@@ -157,7 +157,7 @@ static void *cache_get(git_cache *cache, const git_oid *oid, unsigned int flags)
return NULL; return NULL;
pos = kh_get(oid, cache->map, oid); pos = kh_get(oid, cache->map, oid);
if (pos != kh_end(cache->map)) { if (git_oidmap_valid_index(cache->map, pos)) {
entry = kh_val(cache->map, pos); entry = kh_val(cache->map, pos);
if (flags && entry->flags != flags) { if (flags && entry->flags != flags) {
...@@ -196,7 +196,7 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry) ...@@ -196,7 +196,7 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
pos = kh_get(oid, cache->map, &entry->oid); pos = kh_get(oid, cache->map, &entry->oid);
/* not found */ /* not found */
if (pos == kh_end(cache->map)) { if (!git_oidmap_valid_index(cache->map, pos)) {
int rval; int rval;
pos = kh_put(oid, cache->map, &entry->oid, &rval); pos = kh_put(oid, cache->map, &entry->oid, &rval);
......
...@@ -83,7 +83,7 @@ static int impl__read(void **buffer_p, size_t *len_p, git_otype *type_p, git_odb ...@@ -83,7 +83,7 @@ static int impl__read(void **buffer_p, size_t *len_p, git_otype *type_p, git_odb
khiter_t pos; khiter_t pos;
pos = kh_get(oid, db->objects, oid); pos = kh_get(oid, db->objects, oid);
if (pos == kh_end(db->objects)) if (!git_oidmap_valid_index(db->objects, pos))
return GIT_ENOTFOUND; return GIT_ENOTFOUND;
obj = kh_val(db->objects, pos); obj = kh_val(db->objects, pos);
...@@ -104,7 +104,7 @@ static int impl__read_header(size_t *len_p, git_otype *type_p, git_odb_backend * ...@@ -104,7 +104,7 @@ static int impl__read_header(size_t *len_p, git_otype *type_p, git_odb_backend *
khiter_t pos; khiter_t pos;
pos = kh_get(oid, db->objects, oid); pos = kh_get(oid, db->objects, oid);
if (pos == kh_end(db->objects)) if (!git_oidmap_valid_index(db->objects, pos))
return GIT_ENOTFOUND; return GIT_ENOTFOUND;
obj = kh_val(db->objects, pos); obj = kh_val(db->objects, pos);
......
...@@ -49,6 +49,9 @@ GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid) ...@@ -49,6 +49,9 @@ GIT_INLINE(khint_t) git_oidmap_hash(const git_oid *oid)
#define git_oidmap_foreach_value kh_foreach_value #define git_oidmap_foreach_value kh_foreach_value
#define git_oidmap_begin kh_begin
#define git_oidmap_end kh_end
#define git_oidmap_size(h) kh_size(h) #define git_oidmap_size(h) kh_size(h)
#define git_oidmap_clear(h) kh_clear(oid, h) #define git_oidmap_clear(h) kh_clear(oid, h)
......
...@@ -517,7 +517,7 @@ static int cb_tag_foreach(const char *name, git_oid *oid, void *data) ...@@ -517,7 +517,7 @@ static int cb_tag_foreach(const char *name, git_oid *oid, void *data)
GIT_UNUSED(name); GIT_UNUSED(name);
pos = kh_get(oid, pb->object_ix, oid); pos = kh_get(oid, pb->object_ix, oid);
if (pos == kh_end(pb->object_ix)) if (!git_oidmap_valid_index(pb->object_ix, pos))
return 0; return 0;
po = kh_value(pb->object_ix, pos); po = kh_value(pb->object_ix, pos);
......
...@@ -118,7 +118,7 @@ static git_pack_cache_entry *cache_get(git_pack_cache *cache, git_off_t offset) ...@@ -118,7 +118,7 @@ static git_pack_cache_entry *cache_get(git_pack_cache *cache, git_off_t offset)
return NULL; return NULL;
k = kh_get(off, cache->entries, offset); k = kh_get(off, cache->entries, offset);
if (k != kh_end(cache->entries)) { /* found it */ if (git_offmap_valid_index(cache->entries, k)) { /* found it */
entry = kh_value(cache->entries, k); entry = kh_value(cache->entries, k);
git_atomic_inc(&entry->refcount); git_atomic_inc(&entry->refcount);
entry->last_usage = cache->use_ctr++; entry->last_usage = cache->use_ctr++;
...@@ -957,7 +957,7 @@ git_off_t get_delta_base( ...@@ -957,7 +957,7 @@ git_off_t get_delta_base(
git_oid_fromraw(&oid, base_info); git_oid_fromraw(&oid, base_info);
k = kh_get(oid, p->idx_cache, &oid); k = kh_get(oid, p->idx_cache, &oid);
if (k != kh_end(p->idx_cache)) { if (git_oidmap_valid_index(p->idx_cache, k)) {
*curpos += 20; *curpos += 20;
return ((struct git_pack_entry *)kh_value(p->idx_cache, k))->offset; return ((struct git_pack_entry *)kh_value(p->idx_cache, k))->offset;
} else { } else {
......
...@@ -26,7 +26,7 @@ git_commit_list_node *git_revwalk__commit_lookup( ...@@ -26,7 +26,7 @@ git_commit_list_node *git_revwalk__commit_lookup(
/* lookup and reserve space if not already present */ /* lookup and reserve space if not already present */
pos = kh_get(oid, walk->commits, oid); pos = kh_get(oid, walk->commits, oid);
if (pos != kh_end(walk->commits)) if (git_oidmap_valid_index(walk->commits, pos))
return kh_value(walk->commits, pos); return kh_value(walk->commits, pos);
commit = git_commit_list_alloc_node(walk); commit = git_commit_list_alloc_node(walk);
......
...@@ -34,7 +34,7 @@ void test_core_oidmap__basic(void) ...@@ -34,7 +34,7 @@ void test_core_oidmap__basic(void)
int ret; int ret;
pos = kh_get(oid, map, &items[i].oid); pos = kh_get(oid, map, &items[i].oid);
cl_assert(pos == kh_end(map)); cl_assert(!git_oidmap_valid_index(map, pos));
pos = kh_put(oid, map, &items[i].oid, &ret); pos = kh_put(oid, map, &items[i].oid, &ret);
cl_assert(ret != 0); cl_assert(ret != 0);
...@@ -47,7 +47,7 @@ void test_core_oidmap__basic(void) ...@@ -47,7 +47,7 @@ void test_core_oidmap__basic(void)
khiter_t pos; khiter_t pos;
pos = kh_get(oid, map, &items[i].oid); pos = kh_get(oid, map, &items[i].oid);
cl_assert(pos != kh_end(map)); cl_assert(git_oidmap_valid_index(map, pos));
cl_assert_equal_p(kh_val(map, pos), &items[i]); cl_assert_equal_p(kh_val(map, pos), &items[i]);
} }
...@@ -88,7 +88,7 @@ void test_core_oidmap__hash_collision(void) ...@@ -88,7 +88,7 @@ void test_core_oidmap__hash_collision(void)
int ret; int ret;
pos = kh_get(oid, map, &items[i].oid); pos = kh_get(oid, map, &items[i].oid);
cl_assert(pos == kh_end(map)); cl_assert(!git_oidmap_valid_index(map, pos));
pos = kh_put(oid, map, &items[i].oid, &ret); pos = kh_put(oid, map, &items[i].oid, &ret);
cl_assert(ret != 0); cl_assert(ret != 0);
...@@ -101,7 +101,7 @@ void test_core_oidmap__hash_collision(void) ...@@ -101,7 +101,7 @@ void test_core_oidmap__hash_collision(void)
khiter_t pos; khiter_t pos;
pos = kh_get(oid, map, &items[i].oid); pos = kh_get(oid, map, &items[i].oid);
cl_assert(pos != kh_end(map)); cl_assert(git_oidmap_valid_index(map, pos));
cl_assert_equal_p(kh_val(map, pos), &items[i]); cl_assert_equal_p(kh_val(map, pos), &items[i]);
} }
......
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