From 82daa60defbd6497efdaa6c1132ecc8563122ed5 Mon Sep 17 00:00:00 2001 From: INADA Naoki Date: Thu, 29 Nov 2018 20:01:27 +0900 Subject: bpo-30167: Remove __cached__ from __main__ when removing __file__ (GH-7415) --- .../Core and Builtins/2018-06-05-15-49-02.bpo-30167.e956hA.rst | 2 ++ Python/pythonrun.c | 10 ++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2018-06-05-15-49-02.bpo-30167.e956hA.rst diff --git a/Misc/NEWS.d/next/Core and Builtins/2018-06-05-15-49-02.bpo-30167.e956hA.rst b/Misc/NEWS.d/next/Core and Builtins/2018-06-05-15-49-02.bpo-30167.e956hA.rst new file mode 100644 index 0000000..41bdec8 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2018-06-05-15-49-02.bpo-30167.e956hA.rst @@ -0,0 +1,2 @@ +``PyRun_SimpleFileExFlags`` removes ``__cached__`` from module in addition +to ``__file__``. diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 2d5dc88..9b6371d 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -434,8 +434,14 @@ PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, Py_DECREF(v); ret = 0; done: - if (set_file_name && PyDict_DelItemString(d, "__file__")) - PyErr_Clear(); + if (set_file_name) { + if (PyDict_DelItemString(d, "__file__")) { + PyErr_Clear(); + } + if (PyDict_DelItemString(d, "__cached__")) { + PyErr_Clear(); + } + } Py_XDECREF(m); return ret; } -- cgit v0.12