summaryrefslogtreecommitdiff
path: root/src/libgit2/parse.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libgit2/parse.c')
-rw-r--r--src/libgit2/parse.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/libgit2/parse.c b/src/libgit2/parse.c
index 55d3cb10e..9eb86a3f5 100644
--- a/src/libgit2/parse.c
+++ b/src/libgit2/parse.c
@@ -102,13 +102,16 @@ int git_parse_advance_digit(int64_t *out, git_parse_ctx *ctx, int base)
return 0;
}
-int git_parse_advance_oid(git_oid *out, git_parse_ctx *ctx)
+int git_parse_advance_oid(git_oid *out, git_parse_ctx *ctx, git_oid_t oid_type)
{
- if (ctx->line_len < GIT_OID_SHA1_HEXSIZE)
+ size_t oid_hexsize = git_oid_hexsize(oid_type);
+ GIT_ASSERT(oid_hexsize);
+
+ if (ctx->line_len < oid_hexsize)
return -1;
- if ((git_oid__fromstrn(out, ctx->line, GIT_OID_SHA1_HEXSIZE, GIT_OID_SHA1)) < 0)
+ if ((git_oid__fromstrn(out, ctx->line, oid_hexsize, oid_type)) < 0)
return -1;
- git_parse_advance_chars(ctx, GIT_OID_SHA1_HEXSIZE);
+ git_parse_advance_chars(ctx, oid_hexsize);
return 0;
}