mirror of
https://git.zx2c4.com/cgit
synced 2024-11-25 18:08:41 +00:00
Fix segfault in patch view for root commit
The code for patch view assumed the current commit would always have a parent, which made cgit segfault when that wasn't the case. This fixes the bug and adds a test-script for patch view which includes a test for the inital commit. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
parent
0537a7d1cf
commit
e01f1403b9
37
tests/t0108-patch.sh
Executable file
37
tests/t0108-patch.sh
Executable file
@ -0,0 +1,37 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
. ./setup.sh
|
||||||
|
|
||||||
|
prepare_tests "Check content on patch page"
|
||||||
|
|
||||||
|
run_test 'generate foo/patch' '
|
||||||
|
cgit_query "url=foo/patch" >trash/tmp
|
||||||
|
'
|
||||||
|
|
||||||
|
run_test 'find `From:` line' '
|
||||||
|
grep -e "^From: " trash/tmp
|
||||||
|
'
|
||||||
|
|
||||||
|
run_test 'find `Date:` line' '
|
||||||
|
grep -e "^Date: " trash/tmp
|
||||||
|
'
|
||||||
|
|
||||||
|
run_test 'find `Subject:` line' '
|
||||||
|
grep -e "^Subject: commit 5" trash/tmp
|
||||||
|
'
|
||||||
|
|
||||||
|
run_test 'find `cgit` signature' '
|
||||||
|
tail -1 trash/tmp | grep -e "^cgit"
|
||||||
|
'
|
||||||
|
|
||||||
|
run_test 'find initial commit' '
|
||||||
|
root=$(git --git-dir=$PWD/trash/repos/foo/.git rev-list HEAD | tail -1)
|
||||||
|
'
|
||||||
|
|
||||||
|
run_test 'generate patch for initial commit' '
|
||||||
|
cgit_query "url=foo/patch&id=$root" >trash/tmp
|
||||||
|
'
|
||||||
|
|
||||||
|
run_test 'find `cgit` signature' '
|
||||||
|
tail -1 trash/tmp | grep -e "^cgit"
|
||||||
|
'
|
@ -88,7 +88,11 @@ void cgit_print_patch(char *hex, struct cacheitem *item)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
info = cgit_parse_commit(commit);
|
info = cgit_parse_commit(commit);
|
||||||
hashcpy(old_sha1, commit->parents->item->object.sha1);
|
|
||||||
|
if (commit->parents && commit->parents->item)
|
||||||
|
hashcpy(old_sha1, commit->parents->item->object.sha1);
|
||||||
|
else
|
||||||
|
hashclr(old_sha1);
|
||||||
|
|
||||||
patchname = fmt("%s.patch", sha1_to_hex(sha1));
|
patchname = fmt("%s.patch", sha1_to_hex(sha1));
|
||||||
cgit_print_snapshot_start("text/plain", patchname, item);
|
cgit_print_snapshot_start("text/plain", patchname, item);
|
||||||
|
Loading…
Reference in New Issue
Block a user