Message ID | 23925fba-9413-0596-b21a-f49aac922f88@web.de (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | name-rev: use skip_prefix() instead of starts_with() | expand |
On Tue, Nov 26, 2019 at 04:23:31PM +0100, René Scharfe wrote: > diff --git a/builtin/name-rev.c b/builtin/name-rev.c > index b0f0776947..c261d661d7 100644 > --- a/builtin/name-rev.c > +++ b/builtin/name-rev.c > @@ -161,10 +161,8 @@ static const char *name_ref_abbrev(const char *refname, int shorten_unambiguous) > { > if (shorten_unambiguous) > refname = shorten_unambiguous_ref(refname, 0); > - else if (starts_with(refname, "refs/heads/")) > - refname = refname + 11; > - else if (starts_with(refname, "refs/")) > - refname = refname + 5; > + else if (!skip_prefix(refname, "refs/heads/", &refname)) > + skip_prefix(refname, "refs/", &refname); > return refname; And this one is correct because we were already mutating the pointer. Good. Collapsing the conditional makes sense. IMHO it might be a little easier to follow if we keep else-if non-negated, like: if (shorten_unambiguous) refname = shorten_unambiguous(refname, 0); else if (skip_prefix(refname, "refs/heads/", &refname)) ; /* refname already advanced */ else skip_prefix(refname, "refs/", &refname); but I'm fine with it either way. Also, I think we are leaking the result of shorten_unambiguous_refename here (the caller won't free it, as we return a const; but anyway we sometimes return a pointer into the existing const string so it wouldn't be safe). That's all outside your patch, obviously. -Peff
diff --git a/builtin/name-rev.c b/builtin/name-rev.c index b0f0776947..c261d661d7 100644 --- a/builtin/name-rev.c +++ b/builtin/name-rev.c @@ -161,10 +161,8 @@ static const char *name_ref_abbrev(const char *refname, int shorten_unambiguous) { if (shorten_unambiguous) refname = shorten_unambiguous_ref(refname, 0); - else if (starts_with(refname, "refs/heads/")) - refname = refname + 11; - else if (starts_with(refname, "refs/")) - refname = refname + 5; + else if (!skip_prefix(refname, "refs/heads/", &refname)) + skip_prefix(refname, "refs/", &refname); return refname; }
Let skip_prefix() advance refname to get rid of two magic numbers. Signed-off-by: René Scharfe <l.s.r@web.de> --- builtin/name-rev.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) -- 2.24.0