Inada Naoki <songofaca...@gmail.com> added the comment:
> > 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. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue36551> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com