mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #20440: Massive replacing unsafe attribute setting code with special
macro Py_SETREF.
This commit is contained in:
parent
a198645fa0
commit
5a57ade58e
28 changed files with 92 additions and 120 deletions
|
@ -127,8 +127,7 @@ PyFunction_SetDefaults(PyObject *op, PyObject *defaults)
|
|||
PyErr_SetString(PyExc_SystemError, "non-tuple default args");
|
||||
return -1;
|
||||
}
|
||||
Py_XDECREF(((PyFunctionObject *) op) -> func_defaults);
|
||||
((PyFunctionObject *) op) -> func_defaults = defaults;
|
||||
Py_SETREF(((PyFunctionObject *)op)->func_defaults, defaults);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -159,8 +158,7 @@ PyFunction_SetKwDefaults(PyObject *op, PyObject *defaults)
|
|||
"non-dict keyword only default args");
|
||||
return -1;
|
||||
}
|
||||
Py_XDECREF(((PyFunctionObject *)op) -> func_kwdefaults);
|
||||
((PyFunctionObject *) op) -> func_kwdefaults = defaults;
|
||||
Py_SETREF(((PyFunctionObject *)op)->func_kwdefaults, defaults);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -192,8 +190,7 @@ PyFunction_SetClosure(PyObject *op, PyObject *closure)
|
|||
closure->ob_type->tp_name);
|
||||
return -1;
|
||||
}
|
||||
Py_XDECREF(((PyFunctionObject *) op) -> func_closure);
|
||||
((PyFunctionObject *) op) -> func_closure = closure;
|
||||
Py_SETREF(((PyFunctionObject *)op)->func_closure, closure);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -224,8 +221,7 @@ PyFunction_SetAnnotations(PyObject *op, PyObject *annotations)
|
|||
"non-dict annotations");
|
||||
return -1;
|
||||
}
|
||||
Py_XDECREF(((PyFunctionObject *)op) -> func_annotations);
|
||||
((PyFunctionObject *) op) -> func_annotations = annotations;
|
||||
Py_SETREF(((PyFunctionObject *)op)->func_annotations, annotations);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -531,8 +527,7 @@ func_new(PyTypeObject* type, PyObject* args, PyObject* kw)
|
|||
|
||||
if (name != Py_None) {
|
||||
Py_INCREF(name);
|
||||
Py_DECREF(newfunc->func_name);
|
||||
newfunc->func_name = name;
|
||||
Py_SETREF(newfunc->func_name, name);
|
||||
}
|
||||
if (defaults != Py_None) {
|
||||
Py_INCREF(defaults);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue