diff options
author | Etienne Samson <samson.etienne@gmail.com> | 2019-02-02 19:00:45 +0100 |
---|---|---|
committer | Etienne Samson <samson.etienne@gmail.com> | 2019-09-05 10:26:41 +0200 |
commit | baf411e701abb5f89e175b24c2f61c45c9d5e59a (patch) | |
tree | 6cd7e857e30f7cf1bb83828e0b5bb1f1c6b6cddf /src/refdb.c | |
parent | c2cf9844a2b936880df021101f7ecd26e87d0a04 (diff) | |
download | libgit2-baf411e701abb5f89e175b24c2f61c45c9d5e59a.tar.gz |
refdb: ensure all mandatory functions are provided at setup time
Diffstat (limited to 'src/refdb.c')
-rw-r--r-- | src/refdb.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/refdb.c b/src/refdb.c index e0c044f1e..fbbf5193c 100644 --- a/src/refdb.c +++ b/src/refdb.c @@ -68,6 +68,16 @@ int git_refdb_set_backend(git_refdb *db, git_refdb_backend *backend) { GIT_ERROR_CHECK_VERSION(backend, GIT_REFDB_BACKEND_VERSION, "git_refdb_backend"); + if (!backend->exists || !backend->lookup || !backend->iterator || + !backend->write || !backend->rename || !backend->del || + !backend->has_log || !backend->ensure_log || !backend->free || + !backend->reflog_read || !backend->reflog_write || + !backend->reflog_rename || !backend->reflog_delete || + (backend->lock && !backend->unlock)) { + git_error_set(GIT_ERROR_REFERENCE, "incomplete refdb backend implementation"); + return GIT_EINVALID; + } + refdb_free_backend(db); db->backend = backend; |