summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-12-24 08:39:57 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-12-24 08:39:57 (GMT)
commitf0069403518243e37da0aaaa1148d9dfee1adebd (patch)
treec6fc0eb9f3dc2b917e2f998cb25e59248453d49d /Python
parent2bd58e39918d83c639366c69a4da247238f8183f (diff)
parent5a57ade58ec5bee85db41b8ce1340ff077781b65 (diff)
downloadcpython-f0069403518243e37da0aaaa1148d9dfee1adebd.zip
cpython-f0069403518243e37da0aaaa1148d9dfee1adebd.tar.gz
cpython-f0069403518243e37da0aaaa1148d9dfee1adebd.tar.bz2
Issue #20440: Massive replacing unsafe attribute setting code with special
macro Py_SETREF.
Diffstat (limited to 'Python')
-rw-r--r--Python/_warnings.c3
-rw-r--r--Python/ceval.c6
-rw-r--r--Python/compile.c3
3 files changed, 4 insertions, 8 deletions
diff --git a/Python/_warnings.c b/Python/_warnings.c
index 9ca8314..978bad1 100644
--- a/Python/_warnings.c
+++ b/Python/_warnings.c
@@ -680,8 +680,7 @@ setup_context(Py_ssize_t stack_level, PyObject **filename, int *lineno,
goto handle_error;
}
else if (!is_true) {
- Py_DECREF(*filename);
- *filename = PyUnicode_FromString("__main__");
+ Py_SETREF(*filename, PyUnicode_FromString("__main__"));
if (*filename == NULL)
goto handle_error;
}
diff --git a/Python/ceval.c b/Python/ceval.c
index 1d65649..dd9360c 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -3221,8 +3221,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
Py_INCREF(self);
func = PyMethod_GET_FUNCTION(func);
Py_INCREF(func);
- Py_DECREF(*pfunc);
- *pfunc = self;
+ Py_SETREF(*pfunc, self);
na++;
/* n++; */
} else
@@ -4734,8 +4733,7 @@ call_function(PyObject ***pp_stack, int oparg
Py_INCREF(self);
func = PyMethod_GET_FUNCTION(func);
Py_INCREF(func);
- Py_DECREF(*pfunc);
- *pfunc = self;
+ Py_SETREF(*pfunc, self);
na++;
n++;
} else
diff --git a/Python/compile.c b/Python/compile.c
index 030afed..0f619c4 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1800,8 +1800,7 @@ compiler_class(struct compiler *c, stmt_ty s)
{
/* use the class name for name mangling */
Py_INCREF(s->v.ClassDef.name);
- Py_XDECREF(c->u->u_private);
- c->u->u_private = s->v.ClassDef.name;
+ Py_SETREF(c->u->u_private, s->v.ClassDef.name);
/* load (global) __name__ ... */
str = PyUnicode_InternFromString("__name__");
if (!str || !compiler_nameop(c, str, Load)) {