From patchwork Mon Nov 16 19:10:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D9325: histedit: don't crash if commit message is empty From: phabricator X-Patchwork-Id: 47601 Message-Id: To: Phabricator Cc: mercurial-devel@mercurial-scm.org Date: Mon, 16 Nov 2020 19:10:38 +0000 martinvonz created this revision. Herald added a reviewer: durin42. Herald added a reviewer: hg-reviewers. Herald added a subscriber: mercurial-patches. REVISION SUMMARY If the commit message is empty, histedit will crash before this patch because it assumes that `summary.splitlines()` is non-empty. One of our users at work ran into this crash for a commit that was created by an internal system. I don't think we have a good way of testing this because it's hard to create a commit with an empty commit message. I've added a comment to help prevent regressions. REPOSITORY rHG Mercurial BRANCH default REVISION DETAIL https://phab.mercurial-scm.org/D9325 AFFECTED FILES hgext/histedit.py CHANGE DETAILS To: martinvonz, durin42, #hg-reviewers Cc: mercurial-patches, mercurial-devel diff --git a/hgext/histedit.py b/hgext/histedit.py --- a/hgext/histedit.py +++ b/hgext/histedit.py @@ -528,7 +528,8 @@ summary = cmdutil.rendertemplate( ctx, ui.config(b'histedit', b'summary-template') ) - summary = summary.splitlines()[0] + # Handle the fact that `''.splitlines() => []` + summary = summary.splitlines()[0] if summary else b'' line = b'%s %s %s' % (self.verb, ctx, summary) # trim to 75 columns by default so it's not stupidly wide in my editor # (the 5 more are left for verb)