diff -r d1ba4868296f Modules/parsermodule.c --- a/Modules/parsermodule.c Wed Mar 25 01:21:14 2015 +0100 +++ b/Modules/parsermodule.c Wed Mar 25 01:27:42 2015 +0100 @@ -1098,17 +1098,20 @@ validate_repeating_list(node *tree, int int res = (nch && validate_ntype(tree, ntype) && vfunc(CHILD(tree, 0))); - if (!res && !PyErr_Occurred()) - (void) validate_numnodes(tree, 1, name); - else { - if (is_even(nch)) - res = validate_comma(CHILD(tree, --nch)); - if (res && nch > 1) { - int pos = 1; - for ( ; res && pos < nch; pos += 2) - res = (validate_comma(CHILD(tree, pos)) - && vfunc(CHILD(tree, pos + 1))); - } + if (!res) { + if (PyErr_Occurred()) + return 0; + + return validate_numnodes(tree, 1, name); + } + + if (is_even(nch)) + res = validate_comma(CHILD(tree, --nch)); + if (res && nch > 1) { + int pos = 1; + for ( ; res && pos < nch; pos += 2) + res = (validate_comma(CHILD(tree, pos)) + && vfunc(CHILD(tree, pos + 1))); } return (res); }