]> git.proxmox.com Git - libgit2.git/commitdiff
khash: avoid using `kh_end` directly
authorPatrick Steinhardt <ps@pks.im>
Wed, 25 Jan 2017 13:14:12 +0000 (14:14 +0100)
committerPatrick Steinhardt <ps@pks.im>
Fri, 17 Feb 2017 10:41:06 +0000 (11:41 +0100)
src/cache.c
src/odb_mempack.c
src/oidmap.h
src/pack-objects.c
src/pack.c
src/revwalk.c
tests/core/oidmap.c

index e7a565e0559644b4c880d87fd0439ec81ef7050d..7ababc9df7477e9bfe786c45224f3c064c32bc40 100644 (file)
@@ -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);
index 6aa9ad89a0a23f0d0640251bf18c670ab9537a10..fc5e0f1d40e9bcbbc79d337e7d4385f35da1fb1a 100644 (file)
@@ -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);
index 5364862d20db9848b17c8ed4185748d7c2b2aedb..c0c45027d877a23292ab4e3578c79e00249352c1 100644 (file)
@@ -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)
index 203816710f83951eddd24baebaed3336eda20af2..3517de4794048efe30801bfe16d2e34233b87b99 100644 (file)
@@ -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);
index 8a204342d980fb919226adda681b0774dc630171..e23d50110c2f075344e182f3f797266a5d639f56 100644 (file)
@@ -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 {
index c5fdb7ee3adcbb0fb21edc8c5faa5cc268f26c14..8805aa8fad92d6e917622f17d5cf6bf6fba41c57 100644 (file)
@@ -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);
index 556a6ca4ac5f8289c36cb98c83f805dd10b894a3..aea0698430b281f9fdb9e27353d40c7f6e532754 100644 (file)
@@ -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]);
        }