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;
|
||||
}
|
||||
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));
|
||||
cgit_print_snapshot_start("text/plain", patchname, item);
|
||||
|
Loading…
Reference in New Issue
Block a user