Mercurial > cpython-lru_cache-weakref
comparison Python/future.c @ 42013:cd125fe83051
Make identifiers str (not str8) objects throughout.
This affects the parser, various object implementations,
and all places that put identifiers into C string literals.
In testing, a number of crashes occurred as code would
fail when the recursion limit was reached (such as the
Unicode interning dictionary having key/value pairs where
key is not value). To solve these, I added an overflowed
flag, which allows for 50 more recursions after the
limit was reached and the exception was raised, and
a recursion_critical flag, which indicates that recursion
absolutely must be allowed, i.e. that a certain call
must not cause a stack overflow exception.
There are still some places where both str and str8 are
accepted as identifiers; these should eventually be
removed.
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Sun, 10 Jun 2007 09:51:05 +0000 |
| parents | 654c380cf8b9 |
| children | 302aeee32da8 |
comparison
equal
deleted
inserted
replaced
| 42012:59c6f4cbb326 | 42013:cd125fe83051 |
|---|---|
| 53 { | 53 { |
| 54 int i, found_docstring = 0, done = 0, prev_line = 0; | 54 int i, found_docstring = 0, done = 0, prev_line = 0; |
| 55 | 55 |
| 56 static PyObject *future; | 56 static PyObject *future; |
| 57 if (!future) { | 57 if (!future) { |
| 58 future = PyString_InternFromString("__future__"); | 58 future = PyUnicode_InternFromString("__future__"); |
| 59 if (!future) | 59 if (!future) |
| 60 return 0; | 60 return 0; |
| 61 } | 61 } |
| 62 | 62 |
| 63 if (!(mod->kind == Module_kind || mod->kind == Interactive_kind)) | 63 if (!(mod->kind == Module_kind || mod->kind == Interactive_kind)) |
