Commit 7ebc249c2225c1a9290b0981fcc7f37490b5b80c

Edward Thomson 2013-04-04T11:38:17

dec refcount on refdb instead of always freeing

diff --git a/src/refdb.c b/src/refdb.c
index 0d20643..d9b73c6 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);