summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@edwardthomson.com>2013-04-04 11:38:17 -0500
committerEdward Thomson <ethomson@edwardthomson.com>2013-04-12 11:21:47 -0500
commit7ebc249c2225c1a9290b0981fcc7f37490b5b80c (patch)
treeb9c63f5f3b2f157846216f883e7c6aab146f2c00
parentea8bac37b0c3a302b8f740cbeb4af50d0626815b (diff)
downloadlibgit2-7ebc249c2225c1a9290b0981fcc7f37490b5b80c.tar.gz
dec refcount on refdb instead of always freeing
-rw-r--r--src/refdb.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/refdb.c b/src/refdb.c
index 0d2064343..d9b73c6e7 100644
--- a/src/refdb.c
+++ b/src/refdb.c
@@ -82,7 +82,7 @@ int git_refdb_compress(git_refdb *db)
return 0;
}
-void git_refdb_free(git_refdb *db)
+static void refdb_free(git_refdb *db)
{
if (db->backend) {
if(db->backend->free)
@@ -94,6 +94,14 @@ void git_refdb_free(git_refdb *db)
git__free(db);
}
+void git_refdb_free(git_refdb *db)
+{
+ if (db == NULL)
+ return;
+
+ GIT_REFCOUNT_DEC(db, refdb_free);
+}
+
int git_refdb_exists(int *exists, git_refdb *refdb, const char *ref_name)
{
assert(exists && refdb && refdb->backend);