Message339622
> > This might cause a MemoryError when the __length_hint__ of the source returns a too large value, even when the actual size of the comprehension is smaller, e.g.:
>
> The current implementation of list comprehensions raise neither a memoryerror or overflow error. They will consume all available memory and crash the interpreter.
>
> This patch raises an OverflowError before execution instead of just looping until memory heap exhaustion
>
Note PEP 424.
"""
__length_hint__ must return an integer (else a TypeError is raised) or
NotImplemented, and is not required to be accurate. It may return a
value that is either larger or smaller than the actual size of the
container.
"""
it.__length_hint__ can return 2**1000 even if len(list(it))==0.
In such case, current behavior works. And your patch will raise OverflowError. |
|
Date |
User |
Action |
Args |
2019-04-08 11:45:13 | methane | set | recipients:
+ methane, ronaldoussoren, ncoghlan, serhiy.storchaka, Aaron Hall, pablogsal, anthony shaw |
2019-04-08 11:45:13 | methane | link | issue36551 messages |
2019-04-08 11:45:13 | methane | create | |
|