Issue #20440: Cleaning up the code by using Py_SETREF.
This commit is contained in:
parent
dcf76c9d0a
commit
576f132b98
|
@ -1057,10 +1057,8 @@ format_utcoffset(char *buf, size_t buflen, const char *sep,
|
||||||
}
|
}
|
||||||
/* Offset is normalized, so it is negative if days < 0 */
|
/* Offset is normalized, so it is negative if days < 0 */
|
||||||
if (GET_TD_DAYS(offset) < 0) {
|
if (GET_TD_DAYS(offset) < 0) {
|
||||||
PyObject *temp = offset;
|
|
||||||
sign = '-';
|
sign = '-';
|
||||||
offset = delta_negative((PyDateTime_Delta *)offset);
|
Py_SETREF(offset, delta_negative((PyDateTime_Delta *)offset));
|
||||||
Py_DECREF(temp);
|
|
||||||
if (offset == NULL)
|
if (offset == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
@ -3047,10 +3045,8 @@ tzinfo_fromutc(PyDateTime_TZInfo *self, PyObject *dt)
|
||||||
if (dst == Py_None)
|
if (dst == Py_None)
|
||||||
goto Inconsistent;
|
goto Inconsistent;
|
||||||
if (delta_bool((PyDateTime_Delta *)dst) != 0) {
|
if (delta_bool((PyDateTime_Delta *)dst) != 0) {
|
||||||
PyObject *temp = result;
|
Py_SETREF(result, add_datetime_timedelta((PyDateTime_DateTime *)result,
|
||||||
result = add_datetime_timedelta((PyDateTime_DateTime *)result,
|
(PyDateTime_Delta *)dst, 1));
|
||||||
(PyDateTime_Delta *)dst, 1);
|
|
||||||
Py_DECREF(temp);
|
|
||||||
if (result == NULL)
|
if (result == NULL)
|
||||||
goto Fail;
|
goto Fail;
|
||||||
}
|
}
|
||||||
|
@ -4157,10 +4153,7 @@ datetime_datetime_now_impl(PyTypeObject *type, PyObject *tz)
|
||||||
tz);
|
tz);
|
||||||
if (self != NULL && tz != Py_None) {
|
if (self != NULL && tz != Py_None) {
|
||||||
/* Convert UTC to tzinfo's zone. */
|
/* Convert UTC to tzinfo's zone. */
|
||||||
PyObject *temp = self;
|
self = _PyObject_CallMethodId(tz, &PyId_fromutc, "N", self);
|
||||||
|
|
||||||
self = _PyObject_CallMethodId(tz, &PyId_fromutc, "O", self);
|
|
||||||
Py_DECREF(temp);
|
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -4195,10 +4188,7 @@ datetime_fromtimestamp(PyObject *cls, PyObject *args, PyObject *kw)
|
||||||
tzinfo);
|
tzinfo);
|
||||||
if (self != NULL && tzinfo != Py_None) {
|
if (self != NULL && tzinfo != Py_None) {
|
||||||
/* Convert UTC to tzinfo's zone. */
|
/* Convert UTC to tzinfo's zone. */
|
||||||
PyObject *temp = self;
|
self = _PyObject_CallMethodId(tzinfo, &PyId_fromutc, "N", self);
|
||||||
|
|
||||||
self = _PyObject_CallMethodId(tzinfo, &PyId_fromutc, "O", self);
|
|
||||||
Py_DECREF(temp);
|
|
||||||
}
|
}
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
@ -4421,9 +4411,7 @@ datetime_subtract(PyObject *left, PyObject *right)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (offdiff != NULL) {
|
if (offdiff != NULL) {
|
||||||
PyObject *temp = result;
|
Py_SETREF(result, delta_subtract(result, offdiff));
|
||||||
result = delta_subtract(result, offdiff);
|
|
||||||
Py_DECREF(temp);
|
|
||||||
Py_DECREF(offdiff);
|
Py_DECREF(offdiff);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -396,10 +396,8 @@ element_init(PyObject *self, PyObject *args, PyObject *kwds)
|
||||||
Py_XDECREF(attrib);
|
Py_XDECREF(attrib);
|
||||||
|
|
||||||
/* Replace the objects already pointed to by tag, text and tail. */
|
/* Replace the objects already pointed to by tag, text and tail. */
|
||||||
tmp = self_elem->tag;
|
|
||||||
Py_INCREF(tag);
|
Py_INCREF(tag);
|
||||||
self_elem->tag = tag;
|
Py_SETREF(self_elem->tag, tag);
|
||||||
Py_DECREF(tmp);
|
|
||||||
|
|
||||||
tmp = self_elem->text;
|
tmp = self_elem->text;
|
||||||
Py_INCREF(Py_None);
|
Py_INCREF(Py_None);
|
||||||
|
|
|
@ -762,7 +762,6 @@ profiler_dealloc(ProfilerObject *op)
|
||||||
static int
|
static int
|
||||||
profiler_init(ProfilerObject *pObj, PyObject *args, PyObject *kw)
|
profiler_init(ProfilerObject *pObj, PyObject *args, PyObject *kw)
|
||||||
{
|
{
|
||||||
PyObject *o;
|
|
||||||
PyObject *timer = NULL;
|
PyObject *timer = NULL;
|
||||||
double timeunit = 0.0;
|
double timeunit = 0.0;
|
||||||
int subcalls = 1;
|
int subcalls = 1;
|
||||||
|
@ -777,11 +776,9 @@ profiler_init(ProfilerObject *pObj, PyObject *args, PyObject *kw)
|
||||||
|
|
||||||
if (setSubcalls(pObj, subcalls) < 0 || setBuiltins(pObj, builtins) < 0)
|
if (setSubcalls(pObj, subcalls) < 0 || setBuiltins(pObj, builtins) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
o = pObj->externalTimer;
|
|
||||||
pObj->externalTimer = timer;
|
|
||||||
Py_XINCREF(timer);
|
|
||||||
Py_XDECREF(o);
|
|
||||||
pObj->externalTimerUnit = timeunit;
|
pObj->externalTimerUnit = timeunit;
|
||||||
|
Py_XINCREF(timer);
|
||||||
|
Py_SETREF(pObj->externalTimer, timer);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4494,8 +4494,6 @@ Pickler_get_persid(PicklerObject *self)
|
||||||
static int
|
static int
|
||||||
Pickler_set_persid(PicklerObject *self, PyObject *value)
|
Pickler_set_persid(PicklerObject *self, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
if (value == NULL) {
|
if (value == NULL) {
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
"attribute deletion is not supported");
|
"attribute deletion is not supported");
|
||||||
|
@ -4507,10 +4505,8 @@ Pickler_set_persid(PicklerObject *self, PyObject *value)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = self->pers_func;
|
|
||||||
Py_INCREF(value);
|
Py_INCREF(value);
|
||||||
self->pers_func = value;
|
Py_SETREF(self->pers_func, value);
|
||||||
Py_XDECREF(tmp); /* self->pers_func can be NULL, so be careful. */
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -6946,8 +6942,6 @@ Unpickler_get_persload(UnpicklerObject *self)
|
||||||
static int
|
static int
|
||||||
Unpickler_set_persload(UnpicklerObject *self, PyObject *value)
|
Unpickler_set_persload(UnpicklerObject *self, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
if (value == NULL) {
|
if (value == NULL) {
|
||||||
PyErr_SetString(PyExc_TypeError,
|
PyErr_SetString(PyExc_TypeError,
|
||||||
"attribute deletion is not supported");
|
"attribute deletion is not supported");
|
||||||
|
@ -6960,10 +6954,8 @@ Unpickler_set_persload(UnpicklerObject *self, PyObject *value)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = self->pers_func;
|
|
||||||
Py_INCREF(value);
|
Py_INCREF(value);
|
||||||
self->pers_func = value;
|
Py_SETREF(self->pers_func, value);
|
||||||
Py_XDECREF(tmp); /* self->pers_func can be NULL, so be careful. */
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -321,10 +321,8 @@ set_hook(const char *funcname, PyObject **hook_var, PyObject *args)
|
||||||
Py_CLEAR(*hook_var);
|
Py_CLEAR(*hook_var);
|
||||||
}
|
}
|
||||||
else if (PyCallable_Check(function)) {
|
else if (PyCallable_Check(function)) {
|
||||||
PyObject *tmp = *hook_var;
|
|
||||||
Py_INCREF(function);
|
Py_INCREF(function);
|
||||||
*hook_var = function;
|
Py_SETREF(*hook_var, function);
|
||||||
Py_XDECREF(tmp);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PyErr_Format(PyExc_TypeError,
|
PyErr_Format(PyExc_TypeError,
|
||||||
|
|
|
@ -59,15 +59,11 @@ BaseException_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
||||||
static int
|
static int
|
||||||
BaseException_init(PyBaseExceptionObject *self, PyObject *args, PyObject *kwds)
|
BaseException_init(PyBaseExceptionObject *self, PyObject *args, PyObject *kwds)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
if (!_PyArg_NoKeywords(Py_TYPE(self)->tp_name, kwds))
|
if (!_PyArg_NoKeywords(Py_TYPE(self)->tp_name, kwds))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
tmp = self->args;
|
Py_INCREF(args);
|
||||||
self->args = args;
|
Py_SETREF(self->args, args);
|
||||||
Py_INCREF(self->args);
|
|
||||||
Py_XDECREF(tmp);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -328,11 +324,10 @@ PyException_GetCause(PyObject *self) {
|
||||||
|
|
||||||
/* Steals a reference to cause */
|
/* Steals a reference to cause */
|
||||||
void
|
void
|
||||||
PyException_SetCause(PyObject *self, PyObject *cause) {
|
PyException_SetCause(PyObject *self, PyObject *cause)
|
||||||
PyObject *old_cause = ((PyBaseExceptionObject *)self)->cause;
|
{
|
||||||
((PyBaseExceptionObject *)self)->cause = cause;
|
|
||||||
((PyBaseExceptionObject *)self)->suppress_context = 1;
|
((PyBaseExceptionObject *)self)->suppress_context = 1;
|
||||||
Py_XDECREF(old_cause);
|
Py_SETREF(((PyBaseExceptionObject *)self)->cause, cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
|
@ -344,10 +339,9 @@ PyException_GetContext(PyObject *self) {
|
||||||
|
|
||||||
/* Steals a reference to context */
|
/* Steals a reference to context */
|
||||||
void
|
void
|
||||||
PyException_SetContext(PyObject *self, PyObject *context) {
|
PyException_SetContext(PyObject *self, PyObject *context)
|
||||||
PyObject *old_context = ((PyBaseExceptionObject *)self)->context;
|
{
|
||||||
((PyBaseExceptionObject *)self)->context = context;
|
Py_SETREF(((PyBaseExceptionObject *)self)->context, context);
|
||||||
Py_XDECREF(old_context);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -349,15 +349,11 @@ frame_gettrace(PyFrameObject *f, void *closure)
|
||||||
static int
|
static int
|
||||||
frame_settrace(PyFrameObject *f, PyObject* v, void *closure)
|
frame_settrace(PyFrameObject *f, PyObject* v, void *closure)
|
||||||
{
|
{
|
||||||
PyObject* old_value;
|
|
||||||
|
|
||||||
/* We rely on f_lineno being accurate when f_trace is set. */
|
/* We rely on f_lineno being accurate when f_trace is set. */
|
||||||
f->f_lineno = PyFrame_GetLineNumber(f);
|
f->f_lineno = PyFrame_GetLineNumber(f);
|
||||||
|
|
||||||
old_value = f->f_trace;
|
|
||||||
Py_XINCREF(v);
|
Py_XINCREF(v);
|
||||||
f->f_trace = v;
|
Py_SETREF(f->f_trace, v);
|
||||||
Py_XDECREF(old_value);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -249,7 +249,6 @@ func_get_code(PyFunctionObject *op)
|
||||||
static int
|
static int
|
||||||
func_set_code(PyFunctionObject *op, PyObject *value)
|
func_set_code(PyFunctionObject *op, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
Py_ssize_t nfree, nclosure;
|
Py_ssize_t nfree, nclosure;
|
||||||
|
|
||||||
/* Not legal to del f.func_code or to set it to anything
|
/* Not legal to del f.func_code or to set it to anything
|
||||||
|
@ -270,10 +269,8 @@ func_set_code(PyFunctionObject *op, PyObject *value)
|
||||||
nclosure, nfree);
|
nclosure, nfree);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tmp = op->func_code;
|
|
||||||
Py_INCREF(value);
|
Py_INCREF(value);
|
||||||
op->func_code = value;
|
Py_SETREF(op->func_code, value);
|
||||||
Py_DECREF(tmp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,8 +284,6 @@ func_get_name(PyFunctionObject *op)
|
||||||
static int
|
static int
|
||||||
func_set_name(PyFunctionObject *op, PyObject *value)
|
func_set_name(PyFunctionObject *op, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
/* Not legal to del f.func_name or to set it to anything
|
/* Not legal to del f.func_name or to set it to anything
|
||||||
* other than a string object. */
|
* other than a string object. */
|
||||||
if (value == NULL || !PyUnicode_Check(value)) {
|
if (value == NULL || !PyUnicode_Check(value)) {
|
||||||
|
@ -296,10 +291,8 @@ func_set_name(PyFunctionObject *op, PyObject *value)
|
||||||
"__name__ must be set to a string object");
|
"__name__ must be set to a string object");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tmp = op->func_name;
|
|
||||||
Py_INCREF(value);
|
Py_INCREF(value);
|
||||||
op->func_name = value;
|
Py_SETREF(op->func_name, value);
|
||||||
Py_DECREF(tmp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -313,8 +306,6 @@ func_get_qualname(PyFunctionObject *op)
|
||||||
static int
|
static int
|
||||||
func_set_qualname(PyFunctionObject *op, PyObject *value)
|
func_set_qualname(PyFunctionObject *op, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
/* Not legal to del f.__qualname__ or to set it to anything
|
/* Not legal to del f.__qualname__ or to set it to anything
|
||||||
* other than a string object. */
|
* other than a string object. */
|
||||||
if (value == NULL || !PyUnicode_Check(value)) {
|
if (value == NULL || !PyUnicode_Check(value)) {
|
||||||
|
@ -322,10 +313,8 @@ func_set_qualname(PyFunctionObject *op, PyObject *value)
|
||||||
"__qualname__ must be set to a string object");
|
"__qualname__ must be set to a string object");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tmp = op->func_qualname;
|
|
||||||
Py_INCREF(value);
|
Py_INCREF(value);
|
||||||
op->func_qualname = value;
|
Py_SETREF(op->func_qualname, value);
|
||||||
Py_DECREF(tmp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -343,8 +332,6 @@ func_get_defaults(PyFunctionObject *op)
|
||||||
static int
|
static int
|
||||||
func_set_defaults(PyFunctionObject *op, PyObject *value)
|
func_set_defaults(PyFunctionObject *op, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
/* Legal to del f.func_defaults.
|
/* Legal to del f.func_defaults.
|
||||||
* Can only set func_defaults to NULL or a tuple. */
|
* Can only set func_defaults to NULL or a tuple. */
|
||||||
if (value == Py_None)
|
if (value == Py_None)
|
||||||
|
@ -354,10 +341,8 @@ func_set_defaults(PyFunctionObject *op, PyObject *value)
|
||||||
"__defaults__ must be set to a tuple object");
|
"__defaults__ must be set to a tuple object");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tmp = op->func_defaults;
|
|
||||||
Py_XINCREF(value);
|
Py_XINCREF(value);
|
||||||
op->func_defaults = value;
|
Py_SETREF(op->func_defaults, value);
|
||||||
Py_XDECREF(tmp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -375,8 +360,6 @@ func_get_kwdefaults(PyFunctionObject *op)
|
||||||
static int
|
static int
|
||||||
func_set_kwdefaults(PyFunctionObject *op, PyObject *value)
|
func_set_kwdefaults(PyFunctionObject *op, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
if (value == Py_None)
|
if (value == Py_None)
|
||||||
value = NULL;
|
value = NULL;
|
||||||
/* Legal to del f.func_kwdefaults.
|
/* Legal to del f.func_kwdefaults.
|
||||||
|
@ -386,10 +369,8 @@ func_set_kwdefaults(PyFunctionObject *op, PyObject *value)
|
||||||
"__kwdefaults__ must be set to a dict object");
|
"__kwdefaults__ must be set to a dict object");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tmp = op->func_kwdefaults;
|
|
||||||
Py_XINCREF(value);
|
Py_XINCREF(value);
|
||||||
op->func_kwdefaults = value;
|
Py_SETREF(op->func_kwdefaults, value);
|
||||||
Py_XDECREF(tmp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -408,8 +389,6 @@ func_get_annotations(PyFunctionObject *op)
|
||||||
static int
|
static int
|
||||||
func_set_annotations(PyFunctionObject *op, PyObject *value)
|
func_set_annotations(PyFunctionObject *op, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
if (value == Py_None)
|
if (value == Py_None)
|
||||||
value = NULL;
|
value = NULL;
|
||||||
/* Legal to del f.func_annotations.
|
/* Legal to del f.func_annotations.
|
||||||
|
@ -420,10 +399,8 @@ func_set_annotations(PyFunctionObject *op, PyObject *value)
|
||||||
"__annotations__ must be set to a dict object");
|
"__annotations__ must be set to a dict object");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tmp = op->func_annotations;
|
|
||||||
Py_XINCREF(value);
|
Py_XINCREF(value);
|
||||||
op->func_annotations = value;
|
Py_SETREF(op->func_annotations, value);
|
||||||
Py_XDECREF(tmp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -510,8 +510,6 @@ gen_get_name(PyGenObject *op)
|
||||||
static int
|
static int
|
||||||
gen_set_name(PyGenObject *op, PyObject *value)
|
gen_set_name(PyGenObject *op, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
/* Not legal to del gen.gi_name or to set it to anything
|
/* Not legal to del gen.gi_name or to set it to anything
|
||||||
* other than a string object. */
|
* other than a string object. */
|
||||||
if (value == NULL || !PyUnicode_Check(value)) {
|
if (value == NULL || !PyUnicode_Check(value)) {
|
||||||
|
@ -519,10 +517,8 @@ gen_set_name(PyGenObject *op, PyObject *value)
|
||||||
"__name__ must be set to a string object");
|
"__name__ must be set to a string object");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tmp = op->gi_name;
|
|
||||||
Py_INCREF(value);
|
Py_INCREF(value);
|
||||||
op->gi_name = value;
|
Py_SETREF(op->gi_name, value);
|
||||||
Py_DECREF(tmp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -536,8 +532,6 @@ gen_get_qualname(PyGenObject *op)
|
||||||
static int
|
static int
|
||||||
gen_set_qualname(PyGenObject *op, PyObject *value)
|
gen_set_qualname(PyGenObject *op, PyObject *value)
|
||||||
{
|
{
|
||||||
PyObject *tmp;
|
|
||||||
|
|
||||||
/* Not legal to del gen.__qualname__ or to set it to anything
|
/* Not legal to del gen.__qualname__ or to set it to anything
|
||||||
* other than a string object. */
|
* other than a string object. */
|
||||||
if (value == NULL || !PyUnicode_Check(value)) {
|
if (value == NULL || !PyUnicode_Check(value)) {
|
||||||
|
@ -545,10 +539,8 @@ gen_set_qualname(PyGenObject *op, PyObject *value)
|
||||||
"__qualname__ must be set to a string object");
|
"__qualname__ must be set to a string object");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
tmp = op->gi_qualname;
|
|
||||||
Py_INCREF(value);
|
Py_INCREF(value);
|
||||||
op->gi_qualname = value;
|
Py_SETREF(op->gi_qualname, value);
|
||||||
Py_DECREF(tmp);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1203,7 +1203,7 @@ PyObject_GenericSetAttr(PyObject *obj, PyObject *name, PyObject *value)
|
||||||
int
|
int
|
||||||
PyObject_GenericSetDict(PyObject *obj, PyObject *value, void *context)
|
PyObject_GenericSetDict(PyObject *obj, PyObject *value, void *context)
|
||||||
{
|
{
|
||||||
PyObject *dict, **dictptr = _PyObject_GetDictPtr(obj);
|
PyObject **dictptr = _PyObject_GetDictPtr(obj);
|
||||||
if (dictptr == NULL) {
|
if (dictptr == NULL) {
|
||||||
PyErr_SetString(PyExc_AttributeError,
|
PyErr_SetString(PyExc_AttributeError,
|
||||||
"This object has no __dict__");
|
"This object has no __dict__");
|
||||||
|
@ -1219,10 +1219,8 @@ PyObject_GenericSetDict(PyObject *obj, PyObject *value, void *context)
|
||||||
"not a '%.200s'", Py_TYPE(value)->tp_name);
|
"not a '%.200s'", Py_TYPE(value)->tp_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
dict = *dictptr;
|
Py_INCREF(value);
|
||||||
Py_XINCREF(value);
|
Py_SETREF(*dictptr, value);
|
||||||
*dictptr = value;
|
|
||||||
Py_XDECREF(dict);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2092,7 +2092,7 @@ subtype_dict(PyObject *obj, void *context)
|
||||||
static int
|
static int
|
||||||
subtype_setdict(PyObject *obj, PyObject *value, void *context)
|
subtype_setdict(PyObject *obj, PyObject *value, void *context)
|
||||||
{
|
{
|
||||||
PyObject *dict, **dictptr;
|
PyObject **dictptr;
|
||||||
PyTypeObject *base;
|
PyTypeObject *base;
|
||||||
|
|
||||||
base = get_builtin_base_with_dict(Py_TYPE(obj));
|
base = get_builtin_base_with_dict(Py_TYPE(obj));
|
||||||
|
@ -2123,10 +2123,8 @@ subtype_setdict(PyObject *obj, PyObject *value, void *context)
|
||||||
"not a '%.200s'", Py_TYPE(value)->tp_name);
|
"not a '%.200s'", Py_TYPE(value)->tp_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
dict = *dictptr;
|
|
||||||
Py_XINCREF(value);
|
Py_XINCREF(value);
|
||||||
*dictptr = value;
|
Py_SETREF(*dictptr, value);
|
||||||
Py_XDECREF(dict);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -879,10 +879,8 @@ update_code_filenames(PyCodeObject *co, PyObject *oldname, PyObject *newname)
|
||||||
if (PyUnicode_Compare(co->co_filename, oldname))
|
if (PyUnicode_Compare(co->co_filename, oldname))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
tmp = co->co_filename;
|
Py_INCREF(newname);
|
||||||
co->co_filename = newname;
|
Py_SETREF(co->co_filename, newname);
|
||||||
Py_INCREF(co->co_filename);
|
|
||||||
Py_DECREF(tmp);
|
|
||||||
|
|
||||||
constants = co->co_consts;
|
constants = co->co_consts;
|
||||||
n = PyTuple_GET_SIZE(constants);
|
n = PyTuple_GET_SIZE(constants);
|
||||||
|
@ -1327,10 +1325,8 @@ remove_importlib_frames(void)
|
||||||
(always_trim ||
|
(always_trim ||
|
||||||
PyUnicode_CompareWithASCIIString(code->co_name,
|
PyUnicode_CompareWithASCIIString(code->co_name,
|
||||||
remove_frames) == 0)) {
|
remove_frames) == 0)) {
|
||||||
PyObject *tmp = *outer_link;
|
|
||||||
*outer_link = next;
|
|
||||||
Py_XINCREF(next);
|
Py_XINCREF(next);
|
||||||
Py_DECREF(tmp);
|
Py_SETREF(*outer_link, next);
|
||||||
prev_link = outer_link;
|
prev_link = outer_link;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
@ -118,9 +118,7 @@ tuple_of_constants(unsigned char *codestr, Py_ssize_t n,
|
||||||
/* If it's a BUILD_SET, use the PyTuple we just built to create a
|
/* If it's a BUILD_SET, use the PyTuple we just built to create a
|
||||||
PyFrozenSet, and use that as the constant instead: */
|
PyFrozenSet, and use that as the constant instead: */
|
||||||
if (codestr[0] == BUILD_SET) {
|
if (codestr[0] == BUILD_SET) {
|
||||||
PyObject *tuple = newconst;
|
Py_SETREF(newconst, PyFrozenSet_New(newconst));
|
||||||
newconst = PyFrozenSet_New(tuple);
|
|
||||||
Py_DECREF(tuple);
|
|
||||||
if (newconst == NULL)
|
if (newconst == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -436,10 +436,7 @@ trace_trampoline(PyObject *self, PyFrameObject *frame,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (result != Py_None) {
|
if (result != Py_None) {
|
||||||
PyObject *temp = frame->f_trace;
|
Py_SETREF(frame->f_trace, result);
|
||||||
frame->f_trace = NULL;
|
|
||||||
Py_XDECREF(temp);
|
|
||||||
frame->f_trace = result;
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
Py_DECREF(result);
|
Py_DECREF(result);
|
||||||
|
|
Loading…
Reference in New Issue