Staging
v0.8.1
v0.8.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
Tip revision: dd0e087edc8f1e4d2c0913236b1a62a77d9db6d8 authored by Martin Teichmann on 28 January 2018, 04:17:46 UTC
bpo-30306: release arguments of contextmanager (GH-1500)
bpo-30306: release arguments of contextmanager (GH-1500)
Tip revision: dd0e087
File | Mode | Size |
---|---|---|
clinic | ||
Python-ast.c | -rw-r--r-- | 263.0 KB |
README | -rw-r--r-- | 62 bytes |
_warnings.c | -rw-r--r-- | 37.1 KB |
asdl.c | -rw-r--r-- | 1.4 KB |
ast.c | -rw-r--r-- | 161.5 KB |
ast_opt.c | -rw-r--r-- | 22.9 KB |
ast_unparse.c | -rw-r--r-- | 28.8 KB |
bltinmodule.c | -rw-r--r-- | 83.5 KB |
bootstrap_hash.c | -rw-r--r-- | 17.8 KB |
ceval.c | -rw-r--r-- | 159.8 KB |
ceval_gil.h | -rw-r--r-- | 9.0 KB |
codecs.c | -rw-r--r-- | 44.8 KB |
compile.c | -rw-r--r-- | 157.2 KB |
condvar.h | -rw-r--r-- | 8.9 KB |
context.c | -rw-r--r-- | 26.7 KB |
dtoa.c | -rw-r--r-- | 78.5 KB |
dup2.c | -rw-r--r-- | 759 bytes |
dynamic_annotations.c | -rw-r--r-- | 6.6 KB |
dynload_aix.c | -rw-r--r-- | 5.7 KB |
dynload_dl.c | -rw-r--r-- | 581 bytes |
dynload_hpux.c | -rw-r--r-- | 1.9 KB |
dynload_shlib.c | -rw-r--r-- | 3.3 KB |
dynload_stub.c | -rw-r--r-- | 186 bytes |
dynload_win.c | -rw-r--r-- | 10.0 KB |
errors.c | -rw-r--r-- | 31.9 KB |
fileutils.c | -rw-r--r-- | 48.6 KB |
formatter_unicode.c | -rw-r--r-- | 49.6 KB |
frozen.c | -rw-r--r-- | 1.7 KB |
frozenmain.c | -rw-r--r-- | 2.9 KB |
future.c | -rw-r--r-- | 4.6 KB |
getargs.c | -rw-r--r-- | 75.5 KB |
getcompiler.c | -rw-r--r-- | 538 bytes |
getcopyright.c | -rw-r--r-- | 511 bytes |
getopt.c | -rw-r--r-- | 4.4 KB |
getplatform.c | -rw-r--r-- | 133 bytes |
getversion.c | -rw-r--r-- | 308 bytes |
graminit.c | -rw-r--r-- | 44.0 KB |
hamt.c | -rw-r--r-- | 78.5 KB |
import.c | -rw-r--r-- | 63.9 KB |
importdl.c | -rw-r--r-- | 7.2 KB |
importdl.h | -rw-r--r-- | 487 bytes |
importlib.h | -rw-r--r-- | 96.3 KB |
importlib_external.h | -rw-r--r-- | 139.4 KB |
makeopcodetargets.py | -rwxr-xr-x | 1.6 KB |
marshal.c | -rw-r--r-- | 49.8 KB |
modsupport.c | -rw-r--r-- | 16.9 KB |
mysnprintf.c | -rw-r--r-- | 3.3 KB |
mystrtoul.c | -rw-r--r-- | 8.1 KB |
opcode_targets.h | -rw-r--r-- | 6.3 KB |
pathconfig.c | -rw-r--r-- | 9.8 KB |
peephole.c | -rw-r--r-- | 17.2 KB |
pyarena.c | -rw-r--r-- | 5.5 KB |
pyctype.c | -rw-r--r-- | 7.7 KB |
pyfpe.c | -rw-r--r-- | 345 bytes |
pyhash.c | -rw-r--r-- | 13.2 KB |
pylifecycle.c | -rw-r--r-- | 63.5 KB |
pymath.c | -rw-r--r-- | 1.5 KB |
pystate.c | -rw-r--r-- | 30.1 KB |
pystrcmp.c | -rw-r--r-- | 613 bytes |
pystrhex.c | -rw-r--r-- | 1.7 KB |
pystrtod.c | -rw-r--r-- | 40.1 KB |
pythonrun.c | -rw-r--r-- | 43.5 KB |
pytime.c | -rw-r--r-- | 26.3 KB |
strdup.c | -rw-r--r-- | 277 bytes |
structmember.c | -rw-r--r-- | 8.6 KB |
symtable.c | -rw-r--r-- | 58.1 KB |
sysmodule.c | -rw-r--r-- | 75.2 KB |
thread.c | -rw-r--r-- | 5.3 KB |
thread_nt.h | -rw-r--r-- | 11.2 KB |
thread_pthread.h | -rw-r--r-- | 20.7 KB |
traceback.c | -rw-r--r-- | 24.2 KB |
wordcode_helpers.h | -rw-r--r-- | 1.2 KB |
Computing file changes ...