Staging
v0.5.1
https://github.com/python/cpython
Revision dd0e087edc8f1e4d2c0913236b1a62a77d9db6d8 authored by Martin Teichmann on 28 January 2018, 04:17:46 UTC, committed by Nick Coghlan on 28 January 2018, 04:17:46 UTC
The arguments to a generator function which is declared as a
contextmanager are stored inside the context manager, and
thus are kept alive, even when it is used as a regular context
manager, and not as a function decorator (where it needs
the original arguments to recreate the generator on each
call).

This is a possible unnecessary memory leak, so this changes
contextmanager.__enter__ to release the saved arguments,
as that method being called means that particular CM instance
isn't going to need to recreate the underlying generator.

Patch by Martin Teichmann.
1 parent c4b1248
History
Tip revision: dd0e087edc8f1e4d2c0913236b1a62a77d9db6d8 authored by Martin Teichmann on 28 January 2018, 04:17:46 UTC
bpo-30306: release arguments of contextmanager (GH-1500)
Tip revision: dd0e087
File Mode Size
CODEOWNERS -rw-r--r-- 1.9 KB
CODE_OF_CONDUCT.rst -rw-r--r-- 631 bytes
CONTRIBUTING.rst -rw-r--r-- 2.3 KB
PULL_REQUEST_TEMPLATE.md -rw-r--r-- 316 bytes
appveyor.yml -rw-r--r-- 418 bytes
codecov.yml -rw-r--r-- 482 bytes

back to top