mirror of
https://github.com/python/cpython.git
synced 2026-01-03 14:02:21 +00:00
gh-108512: Add and use new replacements for PySys_GetObject() (GH-111035)
Add functions PySys_GetAttr(), PySys_GetAttrString(), PySys_GetOptionalAttr() and PySys_GetOptionalAttrString().
This commit is contained in:
parent
b265a7ddeb
commit
bac3fcba5b
32 changed files with 287 additions and 93 deletions
|
|
@ -6,7 +6,6 @@
|
|||
#include "pycore_long.h" // _PyLong_GetZero()
|
||||
#include "pycore_pylifecycle.h" // _Py_IsInterpreterFinalizing()
|
||||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||
#include "pycore_sysmodule.h" // _PySys_GetOptionalAttr()
|
||||
#include "pycore_traceback.h" // _Py_DisplaySourceLine()
|
||||
#include "pycore_unicodeobject.h" // _PyUnicode_EqualToASCIIString()
|
||||
|
||||
|
|
@ -678,7 +677,7 @@ show_warning(PyThreadState *tstate, PyObject *filename, int lineno,
|
|||
goto error;
|
||||
}
|
||||
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(stderr), &f_stderr) <= 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(stderr), &f_stderr) <= 0) {
|
||||
fprintf(stderr, "lost sys.stderr\n");
|
||||
goto error;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@
|
|||
#include "pycore_pyerrors.h" // _PyErr_NoMemory()
|
||||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||
#include "pycore_pythonrun.h" // _Py_SourceAsString()
|
||||
#include "pycore_sysmodule.h" // _PySys_GetRequiredAttr()
|
||||
#include "pycore_tuple.h" // _PyTuple_FromArray()
|
||||
#include "pycore_cell.h" // PyCell_GetRef()
|
||||
|
||||
|
|
@ -465,7 +464,7 @@ builtin_callable(PyObject *module, PyObject *obj)
|
|||
static PyObject *
|
||||
builtin_breakpoint(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyObject *keywords)
|
||||
{
|
||||
PyObject *hook = _PySys_GetRequiredAttrString("breakpointhook");
|
||||
PyObject *hook = PySys_GetAttrString("breakpointhook");
|
||||
if (hook == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -2164,7 +2163,7 @@ builtin_print_impl(PyObject *module, PyObject * const *args,
|
|||
int i, err;
|
||||
|
||||
if (file == Py_None) {
|
||||
file = _PySys_GetRequiredAttr(&_Py_ID(stdout));
|
||||
file = PySys_GetAttr(&_Py_ID(stdout));
|
||||
if (file == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -2270,7 +2269,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
|
|||
int tty;
|
||||
|
||||
/* Check that stdin/out/err are intact */
|
||||
fin = _PySys_GetRequiredAttr(&_Py_ID(stdin));
|
||||
fin = PySys_GetAttr(&_Py_ID(stdin));
|
||||
if (fin == NULL) {
|
||||
goto error;
|
||||
}
|
||||
|
|
@ -2278,7 +2277,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
|
|||
PyErr_SetString(PyExc_RuntimeError, "lost sys.stdin");
|
||||
goto error;
|
||||
}
|
||||
fout = _PySys_GetRequiredAttr(&_Py_ID(stdout));
|
||||
fout = PySys_GetAttr(&_Py_ID(stdout));
|
||||
if (fout == NULL) {
|
||||
goto error;
|
||||
}
|
||||
|
|
@ -2286,7 +2285,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt)
|
|||
PyErr_SetString(PyExc_RuntimeError, "lost sys.stdout");
|
||||
goto error;
|
||||
}
|
||||
ferr = _PySys_GetRequiredAttr(&_Py_ID(stderr));
|
||||
ferr = PySys_GetAttr(&_Py_ID(stderr));
|
||||
if (ferr == NULL) {
|
||||
goto error;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2979,7 +2979,7 @@ _PyEval_ImportFrom(PyThreadState *tstate, PyObject *v, PyObject *name)
|
|||
int is_possibly_shadowing_stdlib = 0;
|
||||
if (is_possibly_shadowing) {
|
||||
PyObject *stdlib_modules;
|
||||
if (_PySys_GetOptionalAttrString("stdlib_module_names", &stdlib_modules) < 0) {
|
||||
if (PySys_GetOptionalAttrString("stdlib_module_names", &stdlib_modules) < 0) {
|
||||
goto done;
|
||||
}
|
||||
if (stdlib_modules && PyAnySet_Check(stdlib_modules)) {
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@
|
|||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||
#include "pycore_runtime.h" // _Py_ID()
|
||||
#include "pycore_structseq.h" // _PyStructSequence_FiniBuiltin()
|
||||
#include "pycore_sysmodule.h" // _PySys_GetOptionalAttr()
|
||||
#include "pycore_traceback.h" // _PyTraceBack_FromFrame()
|
||||
#include "pycore_unicodeobject.h" // _PyUnicode_Equal()
|
||||
|
||||
|
|
@ -1570,7 +1569,7 @@ write_unraisable_exc(PyThreadState *tstate, PyObject *exc_type,
|
|||
PyObject *obj)
|
||||
{
|
||||
PyObject *file;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(stderr), &file) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(stderr), &file) < 0) {
|
||||
return -1;
|
||||
}
|
||||
if (file == NULL || file == Py_None) {
|
||||
|
|
@ -1677,7 +1676,7 @@ format_unraisable_v(const char *format, va_list va, PyObject *obj)
|
|||
}
|
||||
|
||||
PyObject *hook;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(unraisablehook), &hook) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(unraisablehook), &hook) < 0) {
|
||||
Py_DECREF(hook_args);
|
||||
err_msg_str = NULL;
|
||||
obj = NULL;
|
||||
|
|
|
|||
|
|
@ -3369,11 +3369,11 @@ PyObject *
|
|||
PyImport_GetImporter(PyObject *path)
|
||||
{
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
PyObject *path_importer_cache = _PySys_GetRequiredAttrString("path_importer_cache");
|
||||
PyObject *path_importer_cache = PySys_GetAttrString("path_importer_cache");
|
||||
if (path_importer_cache == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
PyObject *path_hooks = _PySys_GetRequiredAttrString("path_hooks");
|
||||
PyObject *path_hooks = PySys_GetAttrString("path_hooks");
|
||||
if (path_hooks == NULL) {
|
||||
Py_DECREF(path_importer_cache);
|
||||
return NULL;
|
||||
|
|
@ -3682,14 +3682,14 @@ import_find_and_load(PyThreadState *tstate, PyObject *abs_name)
|
|||
PyTime_t t1 = 0, accumulated_copy = accumulated;
|
||||
|
||||
PyObject *sys_path, *sys_meta_path, *sys_path_hooks;
|
||||
if (_PySys_GetOptionalAttrString("path", &sys_path) < 0) {
|
||||
if (PySys_GetOptionalAttrString("path", &sys_path) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
if (_PySys_GetOptionalAttrString("meta_path", &sys_meta_path) < 0) {
|
||||
if (PySys_GetOptionalAttrString("meta_path", &sys_meta_path) < 0) {
|
||||
Py_XDECREF(sys_path);
|
||||
return NULL;
|
||||
}
|
||||
if (_PySys_GetOptionalAttrString("path_hooks", &sys_path_hooks) < 0) {
|
||||
if (PySys_GetOptionalAttrString("path_hooks", &sys_path_hooks) < 0) {
|
||||
Py_XDECREF(sys_meta_path);
|
||||
Py_XDECREF(sys_path);
|
||||
return NULL;
|
||||
|
|
@ -4127,7 +4127,7 @@ _PyImport_FiniCore(PyInterpreterState *interp)
|
|||
static int
|
||||
init_zipimport(PyThreadState *tstate, int verbose)
|
||||
{
|
||||
PyObject *path_hooks = _PySys_GetRequiredAttrString("path_hooks");
|
||||
PyObject *path_hooks = PySys_GetAttrString("path_hooks");
|
||||
if (path_hooks == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3647,7 +3647,7 @@ _Py_DumpPathConfig(PyThreadState *tstate)
|
|||
#define DUMP_SYS(NAME) \
|
||||
do { \
|
||||
PySys_FormatStderr(" sys.%s = ", #NAME); \
|
||||
if (_PySys_GetOptionalAttrString(#NAME, &obj) < 0) { \
|
||||
if (PySys_GetOptionalAttrString(#NAME, &obj) < 0) { \
|
||||
PyErr_Clear(); \
|
||||
} \
|
||||
if (obj != NULL) { \
|
||||
|
|
@ -3671,7 +3671,7 @@ _Py_DumpPathConfig(PyThreadState *tstate)
|
|||
#undef DUMP_SYS
|
||||
|
||||
PyObject *sys_path;
|
||||
(void) _PySys_GetOptionalAttrString("path", &sys_path);
|
||||
(void) PySys_GetOptionalAttrString("path", &sys_path);
|
||||
if (sys_path != NULL && PyList_Check(sys_path)) {
|
||||
PySys_WriteStderr(" sys.path = [\n");
|
||||
Py_ssize_t len = PyList_GET_SIZE(sys_path);
|
||||
|
|
@ -4294,7 +4294,7 @@ _PyConfig_CreateXOptionsDict(const PyConfig *config)
|
|||
static int
|
||||
config_get_sys_write_bytecode(const PyConfig *config, int *value)
|
||||
{
|
||||
PyObject *attr = _PySys_GetRequiredAttrString("dont_write_bytecode");
|
||||
PyObject *attr = PySys_GetAttrString("dont_write_bytecode");
|
||||
if (attr == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -4315,7 +4315,7 @@ config_get(const PyConfig *config, const PyConfigSpec *spec,
|
|||
{
|
||||
if (use_sys) {
|
||||
if (spec->sys.attr != NULL) {
|
||||
return _PySys_GetRequiredAttrString(spec->sys.attr);
|
||||
return PySys_GetAttrString(spec->sys.attr);
|
||||
}
|
||||
|
||||
if (strcmp(spec->name, "write_bytecode") == 0) {
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
#include "pycore_intrinsics.h" // INTRINSIC_PRINT
|
||||
#include "pycore_pyerrors.h" // _PyErr_SetString()
|
||||
#include "pycore_runtime.h" // _Py_ID()
|
||||
#include "pycore_sysmodule.h" // _PySys_GetRequiredAttr()
|
||||
#include "pycore_tuple.h" // _PyTuple_FromArray()
|
||||
#include "pycore_typevarobject.h" // _Py_make_typevar()
|
||||
#include "pycore_unicodeobject.h" // _PyUnicode_FromASCII()
|
||||
|
|
@ -27,7 +26,7 @@ no_intrinsic1(PyThreadState* tstate, PyObject *unused)
|
|||
static PyObject *
|
||||
print_expr(PyThreadState* Py_UNUSED(ignored), PyObject *value)
|
||||
{
|
||||
PyObject *hook = _PySys_GetRequiredAttr(&_Py_ID(displayhook));
|
||||
PyObject *hook = PySys_GetAttr(&_Py_ID(displayhook));
|
||||
if (hook == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1283,7 +1283,7 @@ init_interp_main(PyThreadState *tstate)
|
|||
if (is_main_interp) {
|
||||
/* Initialize warnings. */
|
||||
PyObject *warnoptions;
|
||||
if (_PySys_GetOptionalAttrString("warnoptions", &warnoptions) < 0) {
|
||||
if (PySys_GetOptionalAttrString("warnoptions", &warnoptions) < 0) {
|
||||
return _PyStatus_ERR("can't initialize warnings");
|
||||
}
|
||||
if (warnoptions != NULL && PyList_Check(warnoptions) &&
|
||||
|
|
@ -1806,7 +1806,7 @@ flush_std_files(void)
|
|||
PyObject *file;
|
||||
int status = 0;
|
||||
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(stdout), &file) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(stdout), &file) < 0) {
|
||||
status = -1;
|
||||
}
|
||||
else if (file != NULL && file != Py_None && !file_is_closed(file)) {
|
||||
|
|
@ -1819,7 +1819,7 @@ flush_std_files(void)
|
|||
}
|
||||
Py_XDECREF(file);
|
||||
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(stderr), &file) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(stderr), &file) < 0) {
|
||||
PyErr_Clear();
|
||||
status = -1;
|
||||
}
|
||||
|
|
@ -3046,7 +3046,7 @@ _Py_FatalError_PrintExc(PyThreadState *tstate)
|
|||
}
|
||||
|
||||
PyObject *ferr;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(stderr), &ferr) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(stderr), &ferr) < 0) {
|
||||
_PyErr_Clear(tstate);
|
||||
}
|
||||
if (ferr == NULL || ferr == Py_None) {
|
||||
|
|
|
|||
|
|
@ -114,7 +114,7 @@ _PyRun_InteractiveLoopObject(FILE *fp, PyObject *filename, PyCompilerFlags *flag
|
|||
}
|
||||
|
||||
PyObject *v;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(ps1), &v) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(ps1), &v) < 0) {
|
||||
PyErr_Print();
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -128,7 +128,7 @@ _PyRun_InteractiveLoopObject(FILE *fp, PyObject *filename, PyCompilerFlags *flag
|
|||
}
|
||||
}
|
||||
Py_XDECREF(v);
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(ps2), &v) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(ps2), &v) < 0) {
|
||||
PyErr_Print();
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -206,7 +206,7 @@ pyrun_one_parse_ast(FILE *fp, PyObject *filename,
|
|||
PyObject *encoding_obj = NULL;
|
||||
const char *encoding = NULL;
|
||||
if (fp == stdin) {
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(stdin), &attr) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(stdin), &attr) < 0) {
|
||||
PyErr_Clear();
|
||||
}
|
||||
else if (attr != NULL && attr != Py_None) {
|
||||
|
|
@ -226,7 +226,7 @@ pyrun_one_parse_ast(FILE *fp, PyObject *filename,
|
|||
// Get sys.ps1 (as UTF-8)
|
||||
PyObject *ps1_obj = NULL;
|
||||
const char *ps1 = "";
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(ps1), &attr) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(ps1), &attr) < 0) {
|
||||
PyErr_Clear();
|
||||
}
|
||||
else if (attr != NULL) {
|
||||
|
|
@ -247,7 +247,7 @@ pyrun_one_parse_ast(FILE *fp, PyObject *filename,
|
|||
// Get sys.ps2 (as UTF-8)
|
||||
PyObject *ps2_obj = NULL;
|
||||
const char *ps2 = "";
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(ps2), &attr) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(ps2), &attr) < 0) {
|
||||
PyErr_Clear();
|
||||
}
|
||||
else if (attr != NULL) {
|
||||
|
|
@ -658,7 +658,7 @@ _Py_HandleSystemExitAndKeyboardInterrupt(int *exitcode_p)
|
|||
}
|
||||
|
||||
PyObject *sys_stderr;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(stderr), &sys_stderr) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(stderr), &sys_stderr) < 0) {
|
||||
PyErr_Clear();
|
||||
}
|
||||
else if (sys_stderr != NULL && sys_stderr != Py_None) {
|
||||
|
|
@ -722,7 +722,7 @@ _PyErr_PrintEx(PyThreadState *tstate, int set_sys_last_vars)
|
|||
_PyErr_Clear(tstate);
|
||||
}
|
||||
}
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(excepthook), &hook) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(excepthook), &hook) < 0) {
|
||||
PyErr_Clear();
|
||||
}
|
||||
if (_PySys_Audit(tstate, "sys.excepthook", "OOOO", hook ? hook : Py_None,
|
||||
|
|
@ -1197,7 +1197,7 @@ void
|
|||
PyErr_Display(PyObject *unused, PyObject *value, PyObject *tb)
|
||||
{
|
||||
PyObject *file;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(stderr), &file) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(stderr), &file) < 0) {
|
||||
PyObject *exc = PyErr_GetRaisedException();
|
||||
_PyObject_Dump(value);
|
||||
fprintf(stderr, "lost sys.stderr\n");
|
||||
|
|
@ -1321,7 +1321,7 @@ static void
|
|||
flush_io_stream(PyThreadState *tstate, PyObject *name)
|
||||
{
|
||||
PyObject *f;
|
||||
if (_PySys_GetOptionalAttr(name, &f) < 0) {
|
||||
if (PySys_GetOptionalAttr(name, &f) < 0) {
|
||||
PyErr_Clear();
|
||||
}
|
||||
if (f != NULL) {
|
||||
|
|
|
|||
|
|
@ -76,12 +76,12 @@ module sys
|
|||
|
||||
|
||||
PyObject *
|
||||
_PySys_GetRequiredAttr(PyObject *name)
|
||||
PySys_GetAttr(PyObject *name)
|
||||
{
|
||||
if (!PyUnicode_Check(name)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"attribute name must be string, not '%.200s'",
|
||||
Py_TYPE(name)->tp_name);
|
||||
"attribute name must be string, not '%T'",
|
||||
name);
|
||||
return NULL;
|
||||
}
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
|
|
@ -98,7 +98,7 @@ _PySys_GetRequiredAttr(PyObject *name)
|
|||
}
|
||||
|
||||
PyObject *
|
||||
_PySys_GetRequiredAttrString(const char *name)
|
||||
PySys_GetAttrString(const char *name)
|
||||
{
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
PyObject *sysdict = tstate->interp->sysdict;
|
||||
|
|
@ -114,12 +114,12 @@ _PySys_GetRequiredAttrString(const char *name)
|
|||
}
|
||||
|
||||
int
|
||||
_PySys_GetOptionalAttr(PyObject *name, PyObject **value)
|
||||
PySys_GetOptionalAttr(PyObject *name, PyObject **value)
|
||||
{
|
||||
if (!PyUnicode_Check(name)) {
|
||||
PyErr_Format(PyExc_TypeError,
|
||||
"attribute name must be string, not '%.200s'",
|
||||
Py_TYPE(name)->tp_name);
|
||||
"attribute name must be string, not '%T'",
|
||||
name);
|
||||
*value = NULL;
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -133,7 +133,7 @@ _PySys_GetOptionalAttr(PyObject *name, PyObject **value)
|
|||
}
|
||||
|
||||
int
|
||||
_PySys_GetOptionalAttrString(const char *name, PyObject **value)
|
||||
PySys_GetOptionalAttrString(const char *name, PyObject **value)
|
||||
{
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
PyObject *sysdict = tstate->interp->sysdict;
|
||||
|
|
@ -773,7 +773,7 @@ sys_displayhook(PyObject *module, PyObject *o)
|
|||
}
|
||||
if (PyObject_SetAttr(builtins, _Py_LATIN1_CHR('_'), Py_None) != 0)
|
||||
return NULL;
|
||||
outf = _PySys_GetRequiredAttr(&_Py_ID(stdout));
|
||||
outf = PySys_GetAttr(&_Py_ID(stdout));
|
||||
if (outf == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -3005,7 +3005,7 @@ static PyObject *
|
|||
get_warnoptions(PyThreadState *tstate)
|
||||
{
|
||||
PyObject *warnoptions;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(warnoptions), &warnoptions) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(warnoptions), &warnoptions) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
if (warnoptions == NULL || !PyList_Check(warnoptions)) {
|
||||
|
|
@ -3042,7 +3042,7 @@ PySys_ResetWarnOptions(void)
|
|||
}
|
||||
|
||||
PyObject *warnoptions;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(warnoptions), &warnoptions) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(warnoptions), &warnoptions) < 0) {
|
||||
PyErr_Clear();
|
||||
return;
|
||||
}
|
||||
|
|
@ -3106,7 +3106,7 @@ PyAPI_FUNC(int)
|
|||
PySys_HasWarnOptions(void)
|
||||
{
|
||||
PyObject *warnoptions;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(warnoptions), &warnoptions) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(warnoptions), &warnoptions) < 0) {
|
||||
PyErr_Clear();
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -3120,7 +3120,7 @@ static PyObject *
|
|||
get_xoptions(PyThreadState *tstate)
|
||||
{
|
||||
PyObject *xoptions;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(_xoptions), &xoptions) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(_xoptions), &xoptions) < 0) {
|
||||
return NULL;
|
||||
}
|
||||
if (xoptions == NULL || !PyDict_Check(xoptions)) {
|
||||
|
|
@ -3373,7 +3373,7 @@ sys_set_flag(PyObject *flags, Py_ssize_t pos, PyObject *value)
|
|||
int
|
||||
_PySys_SetFlagObj(Py_ssize_t pos, PyObject *value)
|
||||
{
|
||||
PyObject *flags = _PySys_GetRequiredAttrString("flags");
|
||||
PyObject *flags = PySys_GetAttrString("flags");
|
||||
if (flags == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -3935,7 +3935,7 @@ _PySys_UpdateConfig(PyThreadState *tstate)
|
|||
#undef COPY_WSTR
|
||||
|
||||
// sys.flags
|
||||
PyObject *flags = _PySys_GetRequiredAttrString("flags");
|
||||
PyObject *flags = PySys_GetAttrString("flags");
|
||||
if (flags == NULL) {
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -4251,7 +4251,7 @@ PySys_SetArgvEx(int argc, wchar_t **argv, int updatepath)
|
|||
}
|
||||
|
||||
PyObject *sys_path;
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(path), &sys_path) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(path), &sys_path) < 0) {
|
||||
Py_FatalError("can't get sys.path");
|
||||
}
|
||||
else if (sys_path != NULL) {
|
||||
|
|
@ -4347,7 +4347,7 @@ sys_write(PyObject *key, FILE *fp, const char *format, va_list va)
|
|||
|
||||
PyObject *exc = _PyErr_GetRaisedException(tstate);
|
||||
written = PyOS_vsnprintf(buffer, sizeof(buffer), format, va);
|
||||
file = _PySys_GetRequiredAttr(key);
|
||||
file = PySys_GetAttr(key);
|
||||
if (sys_pyfile_write(buffer, file) != 0) {
|
||||
_PyErr_Clear(tstate);
|
||||
fputs(buffer, fp);
|
||||
|
|
@ -4391,7 +4391,7 @@ sys_format(PyObject *key, FILE *fp, const char *format, va_list va)
|
|||
PyObject *exc = _PyErr_GetRaisedException(tstate);
|
||||
message = PyUnicode_FromFormatV(format, va);
|
||||
if (message != NULL) {
|
||||
file = _PySys_GetRequiredAttr(key);
|
||||
file = PySys_GetAttr(key);
|
||||
if (sys_pyfile_write_unicode(message, file) != 0) {
|
||||
_PyErr_Clear(tstate);
|
||||
utf8 = PyUnicode_AsUTF8(message);
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@
|
|||
#include "pycore_interpframe.h" // _PyFrame_GetCode()
|
||||
#include "pycore_pyerrors.h" // _PyErr_GetRaisedException()
|
||||
#include "pycore_pystate.h" // _PyThreadState_GET()
|
||||
#include "pycore_sysmodule.h" // _PySys_GetOptionalAttr()
|
||||
#include "pycore_traceback.h" // EXCEPTION_TB_HEADER
|
||||
|
||||
#include "frameobject.h" // PyFrame_New()
|
||||
|
|
@ -399,7 +398,7 @@ _Py_FindSourceFile(PyObject *filename, char* namebuf, size_t namelen, PyObject *
|
|||
taillen = strlen(tail);
|
||||
|
||||
PyThreadState *tstate = _PyThreadState_GET();
|
||||
if (_PySys_GetOptionalAttr(&_Py_ID(path), &syspath) < 0) {
|
||||
if (PySys_GetOptionalAttr(&_Py_ID(path), &syspath) < 0) {
|
||||
PyErr_Clear();
|
||||
goto error;
|
||||
}
|
||||
|
|
@ -777,7 +776,7 @@ _PyTraceBack_Print(PyObject *v, const char *header, PyObject *f)
|
|||
PyErr_BadInternalCall();
|
||||
return -1;
|
||||
}
|
||||
if (_PySys_GetOptionalAttrString("tracebacklimit", &limitv) < 0) {
|
||||
if (PySys_GetOptionalAttrString("tracebacklimit", &limitv) < 0) {
|
||||
return -1;
|
||||
}
|
||||
else if (limitv != NULL && PyLong_Check(limitv)) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue