diff options
author | Vicent Marti <tanoku@gmail.com> | 2013-05-30 17:19:43 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2013-05-30 17:19:43 +0200 |
commit | 979f75d8e1df7e8e43797822d5a55a8eff74fa74 (patch) | |
tree | 756b19bfcb23cca2a4eb4bc62a16ce015511e73e | |
parent | 4e6e2ff26f5a04a4628aa0d81e5d5d73acf28ec4 (diff) | |
download | libgit2-979f75d8e1df7e8e43797822d5a55a8eff74fa74.tar.gz |
Refcounting
-rw-r--r-- | src/refdb.c | 6 | ||||
-rw-r--r-- | src/refdb.h | 2 | ||||
-rw-r--r-- | src/refs.c | 3 |
3 files changed, 8 insertions, 3 deletions
diff --git a/src/refdb.c b/src/refdb.c index d8daa7773..359842e44 100644 --- a/src/refdb.c +++ b/src/refdb.c @@ -86,7 +86,7 @@ int git_refdb_compress(git_refdb *db) return 0; } -static void refdb_free(git_refdb *db) +void git_refdb__free(git_refdb *db) { refdb_free_backend(db); git__free(db); @@ -97,7 +97,7 @@ void git_refdb_free(git_refdb *db) if (db == NULL) return; - GIT_REFCOUNT_DEC(db, refdb_free); + GIT_REFCOUNT_DEC(db, git_refdb__free); } int git_refdb_exists(int *exists, git_refdb *refdb, const char *ref_name) @@ -161,7 +161,7 @@ int git_refdb_iterator_next_name(const char **out, git_reference_iterator *iter) void git_refdb_iterator_free(git_reference_iterator *iter) { - GIT_REFCOUNT_DEC(iter->db, refdb_free); + GIT_REFCOUNT_DEC(iter->db, git_refdb__free); iter->free(iter); } diff --git a/src/refdb.h b/src/refdb.h index 62068db39..3aea37b62 100644 --- a/src/refdb.h +++ b/src/refdb.h @@ -16,6 +16,8 @@ struct git_refdb { git_refdb_backend *backend; }; +void git_refdb__free(git_refdb *db); + int git_refdb_exists( int *exists, git_refdb *refdb, diff --git a/src/refs.c b/src/refs.c index c60e042d9..7103decbd 100644 --- a/src/refs.c +++ b/src/refs.c @@ -95,6 +95,9 @@ void git_reference_free(git_reference *reference) if (reference->type == GIT_REF_SYMBOLIC) git__free(reference->target.symbolic); + if (reference->db) + GIT_REFCOUNT_DEC(reference->db, git_refdb__free); + git__free(reference); } |