diff options
Diffstat (limited to 'src/refspec.c')
-rw-r--r-- | src/refspec.c | 44 |
1 files changed, 32 insertions, 12 deletions
diff --git a/src/refspec.c b/src/refspec.c index 4245cbbda..d0be29bf6 100644 --- a/src/refspec.c +++ b/src/refspec.c @@ -24,7 +24,8 @@ int git_refspec__parse(git_refspec *refspec, const char *input, bool is_fetch) int valid = 0; unsigned int flags; - assert(refspec && input); + GIT_ASSERT_ARG(refspec); + GIT_ASSERT_ARG(input); memset(refspec, 0x0, sizeof(git_refspec)); refspec->push = !is_fetch; @@ -180,7 +181,8 @@ void git_refspec__dispose(git_refspec *refspec) int git_refspec_parse(git_refspec **out_refspec, const char *input, int is_fetch) { git_refspec *refspec; - assert(out_refspec && input); + GIT_ASSERT_ARG(out_refspec); + GIT_ASSERT_ARG(input); *out_refspec = NULL; @@ -219,7 +221,7 @@ const char *git_refspec_string(const git_refspec *refspec) int git_refspec_force(const git_refspec *refspec) { - assert(refspec); + GIT_ASSERT_ARG(refspec); return refspec->force; } @@ -245,8 +247,11 @@ static int refspec_transform( { const char *from_star, *to_star; size_t replacement_len, star_offset; + int error; + + if ((error = git_buf_sanitize(out)) < 0) + return error; - git_buf_sanitize(out); git_buf_clear(out); /* @@ -258,7 +263,7 @@ static int refspec_transform( from_star = strchr(from, '*'); to_star = strchr(to, '*'); - assert(from_star && to_star); + GIT_ASSERT(from_star && to_star); /* star offset, both in 'from' and in 'name' */ star_offset = from_star - from; @@ -278,8 +283,14 @@ static int refspec_transform( int git_refspec_transform(git_buf *out, const git_refspec *spec, const char *name) { - assert(out && spec && name); - git_buf_sanitize(out); + int error; + + GIT_ASSERT_ARG(out); + GIT_ASSERT_ARG(spec); + GIT_ASSERT_ARG(name); + + if ((error = git_buf_sanitize(out)) < 0) + return error; if (!git_refspec_src_matches(spec, name)) { git_error_set(GIT_ERROR_INVALID, "ref '%s' doesn't match the source", name); @@ -294,8 +305,14 @@ int git_refspec_transform(git_buf *out, const git_refspec *spec, const char *nam int git_refspec_rtransform(git_buf *out, const git_refspec *spec, const char *name) { - assert(out && spec && name); - git_buf_sanitize(out); + int error; + + GIT_ASSERT_ARG(out); + GIT_ASSERT_ARG(spec); + GIT_ASSERT_ARG(name); + + if ((error = git_buf_sanitize(out)) < 0) + return error; if (!git_refspec_dst_matches(spec, name)) { git_error_set(GIT_ERROR_INVALID, "ref '%s' doesn't match the destination", name); @@ -322,14 +339,15 @@ int git_refspec__serialize(git_buf *out, const git_refspec *refspec) int git_refspec_is_wildcard(const git_refspec *spec) { - assert(spec && spec->src); + GIT_ASSERT_ARG(spec); + GIT_ASSERT_ARG(spec->src); return (spec->src[strlen(spec->src) - 1] == '*'); } git_direction git_refspec_direction(const git_refspec *spec) { - assert(spec); + GIT_ASSERT_ARG(spec); return spec->push; } @@ -348,7 +366,9 @@ int git_refspec__dwim_one(git_vector *out, git_refspec *spec, git_vector *refs) NULL }; - assert(out && spec && refs); + GIT_ASSERT_ARG(out); + GIT_ASSERT_ARG(spec); + GIT_ASSERT_ARG(refs); cur = git__calloc(1, sizeof(git_refspec)); GIT_ERROR_CHECK_ALLOC(cur); |