Browse Source

for-each-ref: cope with tags with incomplete lines

If you have a tag with a single, incomplete line as its payload, asking
git-for-each-ref for its %(body) element accessed a NULL pointer.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Junio C Hamano 17 years ago
parent
commit
e276c26b4b
  1. 4
      builtin-for-each-ref.c
  2. 10
      t/t6300-for-each-ref.sh

4
builtin-for-each-ref.c

@ -459,8 +459,10 @@ static void find_subpos(const char *buf, unsigned long sz, const char **sub, con @@ -459,8 +459,10 @@ static void find_subpos(const char *buf, unsigned long sz, const char **sub, con
return;
*sub = buf; /* first non-empty line */
buf = strchr(buf, '\n');
if (!buf)
if (!buf) {
*body = "";
return; /* no body */
}
while (*buf == '\n')
buf++; /* skip blank between subject and body */
*body = buf;

10
t/t6300-for-each-ref.sh

@ -262,4 +262,14 @@ for i in "--perl --shell" "-s --python" "--python --tcl" "--tcl --perl"; do @@ -262,4 +262,14 @@ for i in "--perl --shell" "-s --python" "--python --tcl" "--tcl --perl"; do
"
done

test_expect_success 'an unusual tag with an incomplete line' '

git tag -m "bogo" bogo &&
bogo=$(git cat-file tag bogo) &&
bogo=$(printf "%s" "$bogo" | git mktag) &&
git tag -f bogo "$bogo" &&
git for-each-ref --format "%(body)" refs/tags/bogo

'

test_done

Loading…
Cancel
Save