mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
* selectmodule.c: fix (another!) two memory leaks -- this time in list2set
* tokenizer.[ch]: allow continuation without \ inside () [] {}.
This commit is contained in:
parent
b2c6556fb0
commit
a849b834f1
3 changed files with 21 additions and 2 deletions
|
@ -109,6 +109,7 @@ tok_new()
|
|||
tok->pendin = 0;
|
||||
tok->prompt = tok->nextprompt = NULL;
|
||||
tok->lineno = 0;
|
||||
tok->level = 0;
|
||||
return tok;
|
||||
}
|
||||
|
||||
|
@ -390,7 +391,7 @@ tok_get(tok, p_start, p_end)
|
|||
/* We can't jump back right here since we still
|
||||
may need to skip to the end of a comment */
|
||||
}
|
||||
if (!blankline) {
|
||||
if (!blankline && tok->level == 0) {
|
||||
if (col == tok->indstack[tok->indent]) {
|
||||
/* No change */
|
||||
}
|
||||
|
@ -483,7 +484,7 @@ tok_get(tok, p_start, p_end)
|
|||
/* Newline */
|
||||
if (c == '\n') {
|
||||
tok->atbol = 1;
|
||||
if (blankline)
|
||||
if (blankline || tok->level > 0)
|
||||
goto nextline;
|
||||
*p_end = tok->cur - 1; /* Leave '\n' out of the string */
|
||||
return NEWLINE;
|
||||
|
@ -612,6 +613,20 @@ tok_get(tok, p_start, p_end)
|
|||
tok_backup(tok, c2);
|
||||
}
|
||||
|
||||
/* Keep track of parenteses nesting level */
|
||||
switch (c) {
|
||||
case '(':
|
||||
case '[':
|
||||
case '{':
|
||||
tok->level++;
|
||||
break;
|
||||
case ')':
|
||||
case ']':
|
||||
case '}':
|
||||
tok->level--;
|
||||
break;
|
||||
}
|
||||
|
||||
/* Punctuation character */
|
||||
*p_end = tok->cur;
|
||||
return tok_1char(c);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue