khash: avoid using `kh_end` directly
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
diff --git a/src/cache.c b/src/cache.c
index e7a565e..7ababc9 100644
--- a/src/cache.c
+++ b/src/cache.c
@@ -125,7 +125,7 @@ static void cache_evict_entries(git_cache *cache)
}
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)) {
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)
return NULL;
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);
if (flags && entry->flags != flags) {
@@ -196,7 +196,7 @@ static void *cache_store(git_cache *cache, git_cached_obj *entry)
pos = kh_get(oid, cache->map, &entry->oid);
/* not found */
- if (pos == kh_end(cache->map)) {
+ if (!git_oidmap_valid_index(cache->map, pos)) {
int rval;
pos = kh_put(oid, cache->map, &entry->oid, &rval);
diff --git a/src/odb_mempack.c b/src/odb_mempack.c
index 6aa9ad8..fc5e0f1 100644
--- a/src/odb_mempack.c
+++ b/src/odb_mempack.c
@@ -83,7 +83,7 @@ static int impl__read(void **buffer_p, size_t *len_p, git_otype *type_p, git_odb
khiter_t pos;
pos = kh_get(oid, db->objects, oid);
- if (pos == kh_end(db->objects))
+ if (!git_oidmap_valid_index(db->objects, pos))
return GIT_ENOTFOUND;
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 *
khiter_t pos;
pos = kh_get(oid, db->objects, oid);
- if (pos == kh_end(db->objects))
+ if (!git_oidmap_valid_index(db->objects, pos))
return GIT_ENOTFOUND;
obj = kh_val(db->objects, pos);
diff --git a/src/oidmap.h b/src/oidmap.h
index 5364862..c0c4502 100644
--- a/src/oidmap.h
+++ b/src/oidmap.h
@@ -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_begin kh_begin
+#define git_oidmap_end kh_end
+
#define git_oidmap_size(h) kh_size(h)
#define git_oidmap_clear(h) kh_clear(oid, h)
diff --git a/src/pack-objects.c b/src/pack-objects.c
index 2038167..3517de4 100644
--- a/src/pack-objects.c
+++ b/src/pack-objects.c
@@ -517,7 +517,7 @@ static int cb_tag_foreach(const char *name, git_oid *oid, void *data)
GIT_UNUSED(name);
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;
po = kh_value(pb->object_ix, pos);
diff --git a/src/pack.c b/src/pack.c
index 8a20434..e23d501 100644
--- a/src/pack.c
+++ b/src/pack.c
@@ -118,7 +118,7 @@ static git_pack_cache_entry *cache_get(git_pack_cache *cache, git_off_t offset)
return NULL;
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);
git_atomic_inc(&entry->refcount);
entry->last_usage = cache->use_ctr++;
@@ -957,7 +957,7 @@ git_off_t get_delta_base(
git_oid_fromraw(&oid, base_info);
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;
return ((struct git_pack_entry *)kh_value(p->idx_cache, k))->offset;
} else {
diff --git a/src/revwalk.c b/src/revwalk.c
index c5fdb7e..8805aa8 100644
--- a/src/revwalk.c
+++ b/src/revwalk.c
@@ -26,7 +26,7 @@ git_commit_list_node *git_revwalk__commit_lookup(
/* lookup and reserve space if not already present */
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);
commit = git_commit_list_alloc_node(walk);
diff --git a/tests/core/oidmap.c b/tests/core/oidmap.c
index 556a6ca..aea0698 100644
--- a/tests/core/oidmap.c
+++ b/tests/core/oidmap.c
@@ -34,7 +34,7 @@ void test_core_oidmap__basic(void)
int ret;
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);
cl_assert(ret != 0);
@@ -47,7 +47,7 @@ void test_core_oidmap__basic(void)
khiter_t pos;
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]);
}
@@ -88,7 +88,7 @@ void test_core_oidmap__hash_collision(void)
int ret;
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);
cl_assert(ret != 0);
@@ -101,7 +101,7 @@ void test_core_oidmap__hash_collision(void)
khiter_t pos;
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]);
}