Skip to content

Commit 5eafa67

Browse files
Fix parser_init().
1 parent 13e4b89 commit 5eafa67

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

Python/getargs.c

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1976,12 +1976,7 @@ new_kwtuple(const char * const *keywords, int total, int pos)
19761976
static int
19771977
parser_init(struct _PyArg_Parser *parser)
19781978
{
1979-
const char * const *keywords;
1980-
const char *fname, *custommsg;
1981-
int len, pos, min, max, owned;
1982-
PyObject *kwtuple;
1983-
1984-
keywords = parser->keywords;
1979+
const char * const *keywords = parser->keywords;
19851980
assert(keywords != NULL);
19861981

19871982
if (parser->initialized) {
@@ -1994,14 +1989,27 @@ parser_init(struct _PyArg_Parser *parser)
19941989
parser->min == 0 &&
19951990
parser->max == 0);
19961991

1992+
int len, pos;
19971993
if (scan_keywords(keywords, &len, &pos) < 0) {
19981994
return 0;
19991995
}
2000-
if (parser->format && parse_format(parser->format, len, pos,
2001-
&fname, &custommsg, &min, &max) < 0) {
2002-
return 0;
1996+
1997+
const char *fname, *custommsg = NULL;
1998+
int min = 0, max = 0;
1999+
if (parser->format) {
2000+
assert(parser->fname == NULL);
2001+
if (parse_format(parser->format, len, pos,
2002+
&fname, &custommsg, &min, &max) < 0) {
2003+
return 0;
2004+
}
20032005
}
2004-
kwtuple = parser->kwtuple;
2006+
else {
2007+
assert(parser->fname != NULL);
2008+
fname = parser->fname;
2009+
}
2010+
2011+
int owned;
2012+
PyObject *kwtuple = parser->kwtuple;
20052013
if (kwtuple == NULL) {
20062014
kwtuple = new_kwtuple(keywords, len, pos);
20072015
if (kwtuple == NULL) {

0 commit comments

Comments
 (0)