diff options
Diffstat (limited to 'src/odb.c')
| -rw-r--r-- | src/odb.c | 16 |
1 files changed, 11 insertions, 5 deletions
@@ -275,6 +275,7 @@ int git_odb_new(git_odb **out) } *out = db; + GIT_REFCOUNT_INC(db); return GIT_SUCCESS; } @@ -405,17 +406,14 @@ int git_odb_open(git_odb **out, const char *objects_dir) return GIT_SUCCESS; cleanup: - git_odb_close(db); + git_odb_free(db); return error; /* error already set - pass through */ } -void git_odb_close(git_odb *db) +static void odb_free(git_odb *db) { unsigned int i; - if (db == NULL) - return; - for (i = 0; i < db->backends.length; ++i) { backend_internal *internal = git_vector_get(&db->backends, i); git_odb_backend *backend = internal->backend; @@ -431,6 +429,14 @@ void git_odb_close(git_odb *db) git__free(db); } +void git_odb_free(git_odb *db) +{ + if (db == NULL) + return; + + GIT_REFCOUNT_DEC(db, odb_free); +} + int git_odb_exists(git_odb *db, const git_oid *id) { git_odb_object *object; |
