mirror of
https://git.proxmox.com/git/libgit2
synced 2025-06-23 09:08:04 +00:00
Merge pull request #4131 from pks-t/pks/attrcache-cleanups
Attrcache cleanups
This commit is contained in:
commit
c03f00ea9c
@ -103,8 +103,11 @@ static int attr_cache_upsert(git_attr_cache *cache, git_attr_file *file)
|
|||||||
GIT_REFCOUNT_OWN(file, entry);
|
GIT_REFCOUNT_OWN(file, entry);
|
||||||
GIT_REFCOUNT_INC(file);
|
GIT_REFCOUNT_INC(file);
|
||||||
|
|
||||||
old = git__compare_and_swap(
|
/*
|
||||||
&entry->file[file->source], entry->file[file->source], file);
|
* Replace the existing value if another thread has
|
||||||
|
* created it in the meantime.
|
||||||
|
*/
|
||||||
|
old = git__swap(entry->file[file->source], file);
|
||||||
|
|
||||||
if (old) {
|
if (old) {
|
||||||
GIT_REFCOUNT_OWN(old, NULL);
|
GIT_REFCOUNT_OWN(old, NULL);
|
||||||
@ -309,7 +312,7 @@ static void attr_cache__free(git_attr_cache *cache)
|
|||||||
if (!cache)
|
if (!cache)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
unlock = (git_mutex_lock(&cache->lock) == 0);
|
unlock = (attr_cache_lock(cache) == 0);
|
||||||
|
|
||||||
if (cache->files != NULL) {
|
if (cache->files != NULL) {
|
||||||
git_attr_file_entry *entry;
|
git_attr_file_entry *entry;
|
||||||
@ -345,13 +348,13 @@ static void attr_cache__free(git_attr_cache *cache)
|
|||||||
cache->cfg_excl_file = NULL;
|
cache->cfg_excl_file = NULL;
|
||||||
|
|
||||||
if (unlock)
|
if (unlock)
|
||||||
git_mutex_unlock(&cache->lock);
|
attr_cache_unlock(cache);
|
||||||
git_mutex_free(&cache->lock);
|
git_mutex_free(&cache->lock);
|
||||||
|
|
||||||
git__free(cache);
|
git__free(cache);
|
||||||
}
|
}
|
||||||
|
|
||||||
int git_attr_cache__do_init(git_repository *repo)
|
int git_attr_cache__init(git_repository *repo)
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
git_attr_cache *cache = git_repository_attr_cache(repo);
|
git_attr_cache *cache = git_repository_attr_cache(repo);
|
||||||
@ -429,7 +432,7 @@ int git_attr_cache__insert_macro(git_repository *repo, git_attr_rule *macro)
|
|||||||
if (macro->assigns.length == 0)
|
if (macro->assigns.length == 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (git_mutex_lock(&cache->lock) < 0) {
|
if (attr_cache_lock(cache) < 0) {
|
||||||
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 {
|
||||||
|
@ -22,10 +22,7 @@ typedef struct {
|
|||||||
git_pool pool;
|
git_pool pool;
|
||||||
} git_attr_cache;
|
} git_attr_cache;
|
||||||
|
|
||||||
extern int git_attr_cache__do_init(git_repository *repo);
|
extern int git_attr_cache__init(git_repository *repo);
|
||||||
|
|
||||||
#define git_attr_cache__init(REPO) \
|
|
||||||
(git_repository_attr_cache(REPO) ? 0 : git_attr_cache__do_init(REPO))
|
|
||||||
|
|
||||||
/* get file - loading and reload as needed */
|
/* get file - loading and reload as needed */
|
||||||
extern int git_attr_cache__get(
|
extern int git_attr_cache__get(
|
||||||
|
Loading…
Reference in New Issue
Block a user