[PATCH] templater: fix crash by empty group expression
Yuya Nishihara
yuya at tcha.org
Thu Jan 18 12:07:58 UTC 2018
# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1516114201 -32400
# Tue Jan 16 23:50:01 2018 +0900
# Node ID 927c55b5ae4ebb16b01da9a2ac60539ecc6bb234
# Parent 604c08ad12c4c3a2fdf182cdf90d5d4acaa25c9e
templater: fix crash by empty group expression
'exp' may be None because of '(group None)' node. The error message is copied
from revset.py.
diff --git a/mercurial/templater.py b/mercurial/templater.py
--- a/mercurial/templater.py
+++ b/mercurial/templater.py
@@ -259,6 +259,8 @@ def prettyformat(tree):
def compileexp(exp, context, curmethods):
"""Compile parsed template tree to (func, data) pair"""
+ if not exp:
+ raise error.ParseError(_("missing argument"))
t = exp[0]
if t in curmethods:
return curmethods[t](exp, context)
diff --git a/tests/test-command-template.t b/tests/test-command-template.t
--- a/tests/test-command-template.t
+++ b/tests/test-command-template.t
@@ -2766,6 +2766,16 @@ Error on syntax:
hg: parse error at 6: invalid token
[255]
+ $ hg log -T '{}'
+ hg: parse error at 2: not a prefix: end
+ [255]
+ $ hg debugtemplate -v '{()}'
+ (template
+ (group
+ None))
+ hg: parse error: missing argument
+ [255]
+
Behind the scenes, this will throw TypeError
$ hg log -l 3 --template '{date|obfuscate}\n'
More information about the Mercurial-devel
mailing list