summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2014-07-23 13:23:05 +0200
committerVicent Marti <tanoku@gmail.com>2014-07-23 13:23:05 +0200
commit1e711a39918dcdf3ccd70aa5252baf90dc8475df (patch)
tree0f5123e3a6c8a2385c699de12a6fbab67c25bbdb
parent15b66b4d793b5aefdbb1aa40a2e110ac241ba26e (diff)
downloadlibgit2-vmg/read-types.tar.gz
Remove assertsvmg/read-types
-rw-r--r--include/git2/sys/odb_backend.h5
-rw-r--r--src/odb.c10
-rw-r--r--src/odb_loose.c7
-rw-r--r--src/odb_pack.c2
4 files changed, 18 insertions, 6 deletions
diff --git a/include/git2/sys/odb_backend.h b/include/git2/sys/odb_backend.h
index 1fc3c3159..a720027f8 100644
--- a/include/git2/sys/odb_backend.h
+++ b/include/git2/sys/odb_backend.h
@@ -42,6 +42,11 @@ struct git_odb_backend {
git_oid *, void **, size_t *, git_otype *,
git_odb_backend *, const git_oid *, size_t);
+ /* Read the header information for a given object.
+ *
+ * The passed `size_t` or `git_otype` can be NULL of either information
+ * is not required
+ */
int (* read_header)(
size_t *, git_otype *, git_odb_backend *, const git_oid *);
diff --git a/src/odb.c b/src/odb.c
index a4fc02686..8c9bf759e 100644
--- a/src/odb.c
+++ b/src/odb.c
@@ -716,7 +716,7 @@ int git_odb__read_header_or_object(
int error = GIT_ENOTFOUND;
git_odb_object *object;
- assert(db && id && out && len_p && type_p);
+ assert(db && id && out);
if ((object = git_cache_get_raw(odb_cache(db), id)) != NULL) {
*len_p = object->cached.size;
@@ -745,8 +745,12 @@ int git_odb__read_header_or_object(
if ((error = git_odb_read(&object, db, id)) < 0)
return error; /* error already set - pass along */
- *len_p = object->cached.size;
- *type_p = object->cached.type;
+ if (len_p != NULL)
+ *len_p = object->cached.size;
+
+ if (type_p != NULL)
+ *type_p = object->cached.type;
+
*out = object;
return 0;
diff --git a/src/odb_loose.c b/src/odb_loose.c
index b2e8bed4d..0718d4a91 100644
--- a/src/odb_loose.c
+++ b/src/odb_loose.c
@@ -606,8 +606,11 @@ static int loose_backend__read_header(size_t *len_p, git_otype *type_p, git_odb_
if (locate_object(&object_path, (loose_backend *)backend, oid) < 0)
error = git_odb__error_notfound("no matching loose object", oid);
else if ((error = read_header_loose(&raw, &object_path)) == 0) {
- *len_p = raw.len;
- *type_p = raw.type;
+ if (len_p != NULL)
+ *len_p = raw.len;
+
+ if (type_p != NULL)
+ *type_p = raw.type;
}
git_buf_free(&object_path);
diff --git a/src/odb_pack.c b/src/odb_pack.c
index 1757cf920..d3bc81925 100644
--- a/src/odb_pack.c
+++ b/src/odb_pack.c
@@ -353,7 +353,7 @@ static int pack_backend__read_header_internal(
struct git_pack_entry e;
int error;
- assert(len_p && type_p && backend && oid);
+ assert(backend && oid);
if ((error = pack_entry_find(&e, (struct pack_backend *)backend, oid)) < 0)
return error;