all repos — cgit @ e01f1403b9b501c563b1fe0e0052460a95945528

a hyperfast web frontend for git written in c

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>
Lars Hjemli hjemli@gmail.com
Mon, 17 Mar 2008 23:13:16 +0100
commit

e01f1403b9b501c563b1fe0e0052460a95945528

parent

0537a7d1cfdf7934d91798a623030fd454b356af

2 files changed, 42 insertions(+), 1 deletions(-)

jump to
A tests/t0108-patch.sh

@@ -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" +'
M ui-patch.cui-patch.c

@@ -88,7 +88,11 @@ cgit_print_error(fmt("Bad commit reference: %s", hex));

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);