From 979f75d8e1df7e8e43797822d5a55a8eff74fa74 Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Thu, 30 May 2013 17:19:43 +0200 Subject: [PATCH] Refcounting --- src/refdb.c | 6 +++--- src/refdb.h | 2 ++ 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); }