Commit 09e29e47 by Carlos Martín Nieto

pack: fixes to the cache

The offset should be git_off_t, and we should check the return value
of the mutex lock function.
parent 0b3aa7be
...@@ -97,12 +97,14 @@ static int cache_init(git_pack_cache *cache) ...@@ -97,12 +97,14 @@ static int cache_init(git_pack_cache *cache)
return 0; return 0;
} }
static git_pack_cache_entry *cache_get(git_pack_cache *cache, size_t offset) static git_pack_cache_entry *cache_get(git_pack_cache *cache, git_off_t offset)
{ {
khiter_t k; khiter_t k;
git_pack_cache_entry *entry = NULL; git_pack_cache_entry *entry = NULL;
git_mutex_lock(&cache->lock); if (git_mutex_lock(&cache->lock) < 0)
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 (k != kh_end(cache->entries)) { /* found it */
entry = kh_value(cache->entries, k); entry = kh_value(cache->entries, k);
...@@ -150,7 +152,10 @@ static int cache_add(git_pack_cache *cache, git_rawobj *base, git_off_t offset) ...@@ -150,7 +152,10 @@ static int cache_add(git_pack_cache *cache, git_rawobj *base, git_off_t offset)
entry = new_cache_object(base); entry = new_cache_object(base);
if (entry) { if (entry) {
git_mutex_lock(&cache->lock); if (git_mutex_lock(&cache->lock) < 0) {
giterr_set(GITERR_OS, "failed to lock cache");
return -1;
}
/* Add it to the cache if nobody else has */ /* Add it to the cache if nobody else has */
exists = kh_get(off, cache->entries, offset) != kh_end(cache->entries); exists = kh_get(off, cache->entries, offset) != kh_end(cache->entries);
if (!exists) { if (!exists) {
......
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