summaryrefslogtreecommitdiff
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/_warnings.c18
-rw-r--r--Python/import.c3
-rw-r--r--Python/traceback.c17
3 files changed, 22 insertions, 16 deletions
diff --git a/Python/_warnings.c b/Python/_warnings.c
index f4ef0bb4b1..91c611c257 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -762,7 +762,6 @@ is_internal_frame(PyFrameObject *frame)
{
static PyObject *importlib_string = NULL;
static PyObject *bootstrap_string = NULL;
- PyObject *filename;
int contains;
if (importlib_string == NULL) {
@@ -780,14 +779,23 @@ is_internal_frame(PyFrameObject *frame)
Py_INCREF(bootstrap_string);
}
- if (frame == NULL || frame->f_code == NULL ||
- frame->f_code->co_filename == NULL) {
+ if (frame == NULL) {
+ return 0;
+ }
+
+ PyCodeObject *code = PyFrame_GetCode(frame);
+ if (code == NULL) {
+ return 0;
+ }
+
+ PyObject *filename = code->co_filename;
+ if (filename == NULL) {
return 0;
}
- filename = frame->f_code->co_filename;
if (!PyUnicode_Check(filename)) {
return 0;
}
+
contains = PyUnicode_Contains(filename, importlib_string);
if (contains < 0) {
return 0;
@@ -846,7 +854,7 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
}
else {
globals = f->f_globals;
- *filename = f->f_code->co_filename;
+ *filename = PyFrame_GetCode(f)->co_filename;
Py_INCREF(*filename);
*lineno = PyFrame_GetLineNumber(f);
}
diff --git a/Python/import.c b/Python/import.c
index a8743458dd..9142ebba40 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -15,7 +15,6 @@
#include "errcode.h"
#include "marshal.h"
#include "code.h"
-#include "frameobject.h"
#include "importdl.h"
#include "pydtrace.h"
@@ -1536,7 +1535,7 @@ remove_importlib_frames(PyThreadState *tstate)
PyTracebackObject *traceback = (PyTracebackObject *)tb;
PyObject *next = (PyObject *) traceback->tb_next;
PyFrameObject *frame = traceback->tb_frame;
- PyCodeObject *code = frame->f_code;
+ PyCodeObject *code = PyFrame_GetCode(frame);
int now_in_importlib;
assert(PyTraceBack_Check(tb));
diff --git a/Python/traceback.c b/Python/traceback.c
index 85e9124bb6..1ea6cbada9 100644
--- a/Python/traceback.c
+++ b/Python/traceback.c
@@ -560,24 +560,23 @@ tb_printinternal(PyTracebackObject *tb, PyObject *f, long limit)
tb = tb->tb_next;
}
while (tb != NULL && err == 0) {
+ PyCodeObject *code = PyFrame_GetCode(tb->tb_frame);
if (last_file == NULL ||
- tb->tb_frame->f_code->co_filename != last_file ||
+ code->co_filename != last_file ||
last_line == -1 || tb->tb_lineno != last_line ||
- last_name == NULL || tb->tb_frame->f_code->co_name != last_name) {
+ last_name == NULL || code->co_name != last_name) {
if (cnt > TB_RECURSIVE_CUTOFF) {
err = tb_print_line_repeated(f, cnt);
}
- last_file = tb->tb_frame->f_code->co_filename;
+ last_file = code->co_filename;
last_line = tb->tb_lineno;
- last_name = tb->tb_frame->f_code->co_name;
+ last_name = code->co_name;
cnt = 0;
}
cnt++;
if (err == 0 && cnt <= TB_RECURSIVE_CUTOFF) {
- err = tb_displayline(f,
- tb->tb_frame->f_code->co_filename,
- tb->tb_lineno,
- tb->tb_frame->f_code->co_name);
+ err = tb_displayline(f, code->co_filename, tb->tb_lineno,
+ code->co_name);
if (err == 0) {
err = PyErr_CheckSignals();
}
@@ -756,7 +755,7 @@ dump_frame(int fd, PyFrameObject *frame)
PyCodeObject *code;
int lineno;
- code = frame->f_code;
+ code = PyFrame_GetCode(frame);
PUTS(fd, " File ");
if (code != NULL && code->co_filename != NULL
&& PyUnicode_Check(code->co_filename))