*
* The safe way is:
*
- * Py_SETREF(op, op2);
+ * Py_XSETREF(op, op2);
*
* That arranges to set `op` to `op2` _before_ decref'ing, so that any code
* triggered as a side-effect of `op` getting torn down no longer believes
* `op` points to a valid object.
*/
-#define Py_SETREF(op, op2) \
+#define Py_XSETREF(op, op2) \
do { \
PyObject *_py_tmp = (PyObject *)(op); \
(op) = (op2); \
/* Save a reference to the callback in the secondary DB. */
Py_XINCREF(callback);
- Py_SETREF(secondaryDB->associateCallback, callback);
+ Py_XSETREF(secondaryDB->associateCallback, callback);
secondaryDB->primaryDBType = _DB_get_type(self);
/* PyEval_InitThreads is called here due to a quirk in python 1.5
{
/* We can set the private field even if db is closed */
Py_INCREF(private_obj);
- Py_SETREF(self->private_obj, private_obj);
+ Py_XSETREF(self->private_obj, private_obj);
RETURN_NONE();
}
{
/* We can set the private field even if dbenv is closed */
Py_INCREF(private_obj);
- Py_SETREF(self->private_obj, private_obj);
+ Py_XSETREF(self->private_obj, private_obj);
RETURN_NONE();
}
}
Py_INCREF(notifyFunc);
- Py_SETREF(self->event_notifyCallback, notifyFunc);
+ Py_XSETREF(self->event_notifyCallback, notifyFunc);
/* This is to workaround a problem with un-initialized threads (see
comment in DB_associate) */
RETURN_IF_ERR();
Py_INCREF(rep_transport);
- Py_SETREF(self->rep_transport, rep_transport);
+ Py_XSETREF(self->rep_transport, rep_transport);
RETURN_NONE();
}
}
else {
Py_INCREF(src);
- Py_SETREF(*target, src);
+ Py_XSETREF(*target, src);
}
}
return 0;
static int
parse_reset(ReaderObj *self)
{
- Py_SETREF(self->fields, PyList_New(0));
+ Py_XSETREF(self->fields, PyList_New(0));
if (self->fields == NULL)
return -1;
self->field_len = 0;
Py_DECREF((PyObject *)dict);
return NULL;
}
- Py_SETREF(result->tp_dict, (PyObject *)dict);
+ Py_XSETREF(result->tp_dict, (PyObject *)dict);
dict->format = _ctypes_alloc_format_string(NULL, "B");
if (dict->format == NULL) {
Py_DECREF(result);
return -1;
}
Py_INCREF(proto);
- Py_SETREF(stgdict->proto, proto);
+ Py_XSETREF(stgdict->proto, proto);
return 0;
}
Py_DECREF((PyObject *)stgdict);
return NULL;
}
- Py_SETREF(result->tp_dict, (PyObject *)stgdict);
+ Py_XSETREF(result->tp_dict, (PyObject *)stgdict);
return (PyObject *)result;
}
Py_DECREF((PyObject *)stgdict);
return NULL;
}
- Py_SETREF(result->tp_dict, (PyObject *)stgdict);
+ Py_XSETREF(result->tp_dict, (PyObject *)stgdict);
/* Special case for character arrays.
A permanent annoyance: char arrays are also strings!
Py_DECREF((PyObject *)stgdict);
return NULL;
}
- Py_SETREF(result->tp_dict, (PyObject *)stgdict);
+ Py_XSETREF(result->tp_dict, (PyObject *)stgdict);
return (PyObject *)result;
}
Py_DECREF((PyObject *)stgdict);
return NULL;
}
- Py_SETREF(result->tp_dict, (PyObject *)stgdict);
+ Py_XSETREF(result->tp_dict, (PyObject *)stgdict);
if (-1 == make_funcptrtype_dict(stgdict)) {
Py_DECREF(result);
}
ob = PyCData_GetContainer(target);
if (ob->b_objects == NULL || !PyDict_CheckExact(ob->b_objects)) {
- Py_SETREF(ob->b_objects, keep); /* refcount consumed */
+ Py_XSETREF(ob->b_objects, keep); /* refcount consumed */
return 0;
}
key = unique_key(target, index);
return -1;
}
Py_XINCREF(ob);
- Py_SETREF(self->errcheck, ob);
+ Py_XSETREF(self->errcheck, ob);
return 0;
}
return -1;
}
Py_INCREF(ob);
- Py_SETREF(self->restype, ob);
- Py_SETREF(self->checker, PyObject_GetAttrString(ob, "_check_retval_"));
+ Py_XSETREF(self->restype, ob);
+ Py_XSETREF(self->checker, PyObject_GetAttrString(ob, "_check_retval_"));
if (self->checker == NULL)
PyErr_Clear();
return 0;
converters = converters_from_argtypes(ob);
if (!converters)
return -1;
- Py_SETREF(self->converters, converters);
+ Py_XSETREF(self->converters, converters);
Py_INCREF(ob);
- Py_SETREF(self->argtypes, ob);
+ Py_XSETREF(self->argtypes, ob);
}
return 0;
}
return NULL;
}
Py_INCREF(temp);
- Py_SETREF(po->wo, temp);
+ Py_XSETREF(po->wo, temp);
Py_INCREF(Py_None);
return Py_None;
}
if (strcmp(name, "tag") == 0) {
Py_INCREF(value);
- Py_SETREF(self->tag, value);
+ Py_XSETREF(self->tag, value);
} else if (strcmp(name, "text") == 0) {
Py_DECREF(JOIN_OBJ(self->text));
self->text = value;
if (!self->extra)
element_new_extra(self, NULL);
Py_INCREF(value);
- Py_SETREF(self->extra->attrib, value);
+ Py_XSETREF(self->extra->attrib, value);
} else {
PyErr_SetString(PyExc_AttributeError, name);
return -1;
self->index++;
Py_INCREF(node);
- Py_SETREF(self->this, (ElementObject*) node);
+ Py_XSETREF(self->this, (ElementObject*) node);
Py_INCREF(node);
- Py_SETREF(self->last, (ElementObject*) node);
+ Py_XSETREF(self->last, (ElementObject*) node);
if (treebuilder_append_event(self, self->start_event_obj, node) < 0)
goto error;
target = (TreeBuilderObject*) self->target;
Py_INCREF(events);
- Py_SETREF(target->events, events);
+ Py_XSETREF(target->events, events);
/* clear out existing events */
Py_CLEAR(target->start_event_obj);
Py_INCREF(item);
event = PyString_AS_STRING(item);
if (strcmp(event, "start") == 0) {
- Py_SETREF(target->start_event_obj, item);
+ Py_XSETREF(target->start_event_obj, item);
} else if (strcmp(event, "end") == 0) {
- Py_SETREF(target->end_event_obj, item);
+ Py_XSETREF(target->end_event_obj, item);
} else if (strcmp(event, "start-ns") == 0) {
- Py_SETREF(target->start_ns_event_obj, item);
+ Py_XSETREF(target->start_ns_event_obj, item);
EXPAT(SetNamespaceDeclHandler)(
self->parser,
(XML_StartNamespaceDeclHandler) expat_start_ns_handler,
(XML_EndNamespaceDeclHandler) expat_end_ns_handler
);
} else if (strcmp(event, "end-ns") == 0) {
- Py_SETREF(target->end_ns_event_obj, item);
+ Py_XSETREF(target->end_ns_event_obj, item);
EXPAT(SetNamespaceDeclHandler)(
self->parser,
(XML_StartNamespaceDeclHandler) expat_start_ns_handler,
else
Py_INCREF(dict);
- Py_SETREF(pto->fn, fn);
- Py_SETREF(pto->args, fnargs);
- Py_SETREF(pto->kw, kw);
- Py_SETREF(pto->dict, dict);
+ Py_XSETREF(pto->fn, fn);
+ Py_XSETREF(pto->args, fnargs);
+ Py_XSETREF(pto->kw, kw);
+ Py_XSETREF(pto->dict, dict);
Py_RETURN_NONE;
}
Py_CLEAR(res);
goto end;
}
- Py_SETREF(res, _PyBytes_Join(_PyIO_empty_bytes, chunks));
+ Py_XSETREF(res, _PyBytes_Join(_PyIO_empty_bytes, chunks));
end:
LEAVE_BUFFERED(self)
return -1;
Py_INCREF(raw);
- Py_SETREF(self->raw, raw);
+ Py_XSETREF(self->raw, raw);
self->buffer_size = buffer_size;
self->readable = 1;
self->writable = 0;
return -1;
Py_INCREF(raw);
- Py_SETREF(self->raw, raw);
+ Py_XSETREF(self->raw, raw);
self->readable = 0;
self->writable = 1;
return -1;
Py_INCREF(raw);
- Py_SETREF(self->raw, raw);
+ Py_XSETREF(self->raw, raw);
self->buffer_size = buffer_size;
self->readable = 1;
self->writable = 1;
"Oi", self->decoder, (int)self->readtranslate);
if (incrementalDecoder == NULL)
goto error;
- Py_SETREF(self->decoder, incrementalDecoder);
+ Py_XSETREF(self->decoder, incrementalDecoder);
}
}
static void
textiowrapper_set_decoded_chars(textio *self, PyObject *chars)
{
- Py_SETREF(self->decoded_chars, chars);
+ Py_XSETREF(self->decoded_chars, chars);
self->decoded_chars_used = 0;
}
goto fail;
}
Py_DECREF(dec_buffer);
- Py_SETREF(self->snapshot, Py_BuildValue("NN", dec_flags, next_input));
+ Py_XSETREF(self->snapshot, Py_BuildValue("NN", dec_flags, next_input));
}
Py_DECREF(input_chunk);
if (chunks != NULL) {
if (result != NULL && PyList_Append(chunks, result) < 0)
goto fail;
- Py_SETREF(result, PyUnicode_Join(_PyIO_empty_str, chunks));
+ Py_XSETREF(result, PyUnicode_Join(_PyIO_empty_str, chunks));
if (result == NULL)
goto fail;
Py_CLEAR(chunks);
if (chunks != NULL) {
if (line != NULL && PyList_Append(chunks, line) < 0)
goto error;
- Py_SETREF(line, PyUnicode_Join(_PyIO_empty_str, chunks));
+ Py_XSETREF(line, PyUnicode_Join(_PyIO_empty_str, chunks));
if (line == NULL)
goto error;
Py_DECREF(chunks);
}
else if (PyUnicode_Check(s->encoding)) {
PyObject *tmp = PyUnicode_AsEncodedString(s->encoding, NULL, NULL);
- Py_SETREF(s->encoding, tmp);
+ Py_XSETREF(s->encoding, tmp);
}
if (s->encoding == NULL)
goto bail;
node = node->next;
}
- Py_SETREF(self->statement_cache,
+ Py_XSETREF(self->statement_cache,
(pysqlite_Cache *)PyObject_CallFunction((PyObject *)&pysqlite_CacheType, "O", self));
Py_DECREF(self);
self->statement_cache->decref_factory = 0;
if (cursor && self->row_factory != Py_None) {
Py_INCREF(self->row_factory);
- Py_SETREF(((pysqlite_Cursor *)cursor)->row_factory, self->row_factory);
+ Py_XSETREF(((pysqlite_Cursor *)cursor)->row_factory, self->row_factory);
}
return cursor;
}
}
- Py_SETREF(self->statements, new_list);
+ Py_XSETREF(self->statements, new_list);
}
static void _pysqlite_drop_unused_cursor_references(pysqlite_Connection* self)
}
}
- Py_SETREF(self->cursors, new_list);
+ Py_XSETREF(self->cursors, new_list);
}
PyObject* pysqlite_connection_create_function(pysqlite_Connection* self, PyObject* args, PyObject* kwargs)
return 0;
}
- Py_SETREF(self->row_cast_map, PyList_New(0));
+ Py_XSETREF(self->row_cast_map, PyList_New(0));
for (i = 0; i < sqlite3_column_count(self->statement->st); i++) {
converter = NULL;
/* reset description and rowcount */
Py_INCREF(Py_None);
- Py_SETREF(self->description, Py_None);
+ Py_XSETREF(self->description, Py_None);
self->rowcount = -1L;
func_args = PyTuple_New(1);
(void)pysqlite_statement_reset(self->statement);
}
- Py_SETREF(self->statement,
+ Py_XSETREF(self->statement,
(pysqlite_Statement *)pysqlite_cache_get(self->connection->statement_cache, func_args));
Py_DECREF(func_args);
}
if (self->statement->in_use) {
- Py_SETREF(self->statement,
+ Py_XSETREF(self->statement,
PyObject_New(pysqlite_Statement, &pysqlite_StatementType));
if (!self->statement) {
goto error;
numcols = sqlite3_column_count(self->statement->st);
Py_END_ALLOW_THREADS
- Py_SETREF(self->description, PyTuple_New(numcols));
+ Py_XSETREF(self->description, PyTuple_New(numcols));
if (!self->description) {
goto error;
}
if (!copy)
return 0;
- Py_SETREF(*object, copy);
+ Py_XSETREF(*object, copy);
return 1; /* success */
}
return -1;
#else
Py_INCREF(value);
- Py_SETREF(self->ctx, (PySSLContext *)value);
+ Py_XSETREF(self->ctx, (PySSLContext *)value);
SSL_set_SSL_CTX(self->ssl, self->ctx->ctx);
#endif
} else {
if (PyString_Check(o_format)) {
Py_INCREF(o_format);
- Py_SETREF(soself->s_format, o_format);
+ Py_XSETREF(soself->s_format, o_format);
}
else if (PyUnicode_Check(o_format)) {
PyObject *str = PyUnicode_AsEncodedString(o_format, "ascii", NULL);
if (str == NULL)
return -1;
- Py_SETREF(soself->s_format, str);
+ Py_XSETREF(soself->s_format, str);
}
else {
PyErr_Format(PyExc_TypeError,
self->running = 0;
input_left += bzs->avail_in;
if (input_left != 0) {
- Py_SETREF(self->unused_data,
+ Py_XSETREF(self->unused_data,
PyString_FromStringAndSize(bzs->next_in, input_left));
if (self->unused_data == NULL)
goto error;
}
if (! str) return -1;
- Py_SETREF(self->last_string, str);
+ Py_XSETREF(self->last_string, str);
if (! (*s = PyString_AsString(str))) return -1;
if ((str_size = PyString_Size(str)) < 0)
return -1;
- Py_SETREF(self->last_string, str);
+ Py_XSETREF(self->last_string, str);
if (! (*s = PyString_AsString(str)))
return -1;
return -1;
}
Py_INCREF(v);
- Py_SETREF(p->pers_func, v);
+ Py_XSETREF(p->pers_func, v);
return 0;
}
return -1;
}
Py_INCREF(v);
- Py_SETREF(p->inst_pers_func, v);
+ Py_XSETREF(p->inst_pers_func, v);
return 0;
}
return -1;
}
Py_INCREF(v);
- Py_SETREF(p->memo, v);
+ Py_XSETREF(p->memo, v);
return 0;
}
if (!strcmp(name, "persistent_load")) {
Py_XINCREF(value);
- Py_SETREF(self->pers_func, value);
+ Py_XSETREF(self->pers_func, value);
return 0;
}
if (!strcmp(name, "find_global")) {
Py_XINCREF(value);
- Py_SETREF(self->find_class, value);
+ Py_XSETREF(self->find_class, value);
return 0;
}
return -1;
}
Py_INCREF(value);
- Py_SETREF(self->memo, value);
+ Py_XSETREF(self->memo, value);
return 0;
}
(void *) self);
#endif
Py_INCREF(func);
- Py_SETREF(self->ob_cdcallbacks[type].ob_cdcallback, func);
+ Py_XSETREF(self->ob_cdcallbacks[type].ob_cdcallback, func);
Py_INCREF(funcarg);
- Py_SETREF(self->ob_cdcallbacks[type].ob_cdcallbackarg, funcarg);
+ Py_XSETREF(self->ob_cdcallbacks[type].ob_cdcallbackarg, funcarg);
/*
if (type == cd_audio) {
link = teedataobject_jumplink(to->dataobj);
if (link == NULL)
return NULL;
- Py_SETREF(to->dataobj, (teedataobject *)link);
+ Py_XSETREF(to->dataobj, (teedataobject *)link);
to->index = 0;
}
value = teedataobject_getitem(to->dataobj, to->index);
if (Handlers[SIGINT].func == DefaultHandler) {
/* Install default int handler */
Py_INCREF(IntHandler);
- Py_SETREF(Handlers[SIGINT].func, IntHandler);
+ Py_XSETREF(Handlers[SIGINT].func, IntHandler);
old_siginthandler = PyOS_setsig(SIGINT, signal_handler);
}
PyString_AS_STRING(self->unused_data), old_size);
Py_MEMCPY(PyString_AS_STRING(new_data) + old_size,
self->zst.next_in, self->zst.avail_in);
- Py_SETREF(self->unused_data, new_data);
+ Py_XSETREF(self->unused_data, new_data);
self->zst.avail_in = 0;
}
}
(char *)self->zst.next_in, self->zst.avail_in);
if (new_data == NULL)
return -1;
- Py_SETREF(self->unconsumed_tail, new_data);
+ Py_XSETREF(self->unconsumed_tail, new_data);
}
return 0;
}
}
Py_INCREF(self->unused_data);
- Py_SETREF(retval->unused_data, self->unused_data);
+ Py_XSETREF(retval->unused_data, self->unused_data);
Py_INCREF(self->unconsumed_tail);
- Py_SETREF(retval->unconsumed_tail, self->unconsumed_tail);
+ Py_XSETREF(retval->unconsumed_tail, self->unconsumed_tail);
/* Mark it as being initialized */
retval->is_initialised = 1;
}
Py_INCREF(self->unused_data);
- Py_SETREF(retval->unused_data, self->unused_data);
+ Py_XSETREF(retval->unused_data, self->unused_data);
Py_INCREF(self->unconsumed_tail);
- Py_SETREF(retval->unconsumed_tail, self->unconsumed_tail);
+ Py_XSETREF(retval->unconsumed_tail, self->unconsumed_tail);
/* Mark it as being initialized */
retval->is_initialised = 1;
PyObject *get_doc = PyObject_GetAttrString(get, "__doc__");
if (get_doc) {
if (Py_TYPE(self) == &PyProperty_Type) {
- Py_SETREF(prop->prop_doc, get_doc);
+ Py_XSETREF(prop->prop_doc, get_doc);
}
else {
/* If this is a property subclass, put __doc__
return -1;
Py_INCREF(args);
- Py_SETREF(self->args, args);
+ Py_XSETREF(self->args, args);
if (PyTuple_GET_SIZE(self->args) == 1) {
Py_INCREF(PyTuple_GET_ITEM(self->args, 0));
- Py_SETREF(self->message, PyTuple_GET_ITEM(self->args, 0));
+ Py_XSETREF(self->message, PyTuple_GET_ITEM(self->args, 0));
}
return 0;
}
return -1;
}
Py_INCREF(val);
- Py_SETREF(self->dict, val);
+ Py_XSETREF(self->dict, val);
return 0;
}
seq = PySequence_Tuple(val);
if (!seq)
return -1;
- Py_SETREF(self->args, seq);
+ Py_XSETREF(self->args, seq);
return 0;
}
return 0;
if (size == 1) {
Py_INCREF(PyTuple_GET_ITEM(args, 0));
- Py_SETREF(self->code, PyTuple_GET_ITEM(args, 0));
+ Py_XSETREF(self->code, PyTuple_GET_ITEM(args, 0));
}
else { /* size > 1 */
Py_INCREF(args);
- Py_SETREF(self->code, args);
+ Py_XSETREF(self->code, args);
}
return 0;
}
return -1;
}
Py_INCREF(myerrno);
- Py_SETREF(self->myerrno, myerrno);
+ Py_XSETREF(self->myerrno, myerrno);
Py_INCREF(strerror);
- Py_SETREF(self->strerror, strerror);
+ Py_XSETREF(self->strerror, strerror);
/* self->filename will remain Py_None otherwise */
if (filename != NULL) {
Py_INCREF(filename);
- Py_SETREF(self->filename, filename);
+ Py_XSETREF(self->filename, filename);
subslice = PyTuple_GetSlice(args, 0, 2);
if (!subslice)
return -1;
- Py_SETREF(self->args, subslice);
+ Py_XSETREF(self->args, subslice);
}
return 0;
}
return -1;
posix_errno = winerror_to_errno(errcode);
- Py_SETREF(self->winerror, self->myerrno);
+ Py_XSETREF(self->winerror, self->myerrno);
o_errcode = PyInt_FromLong(posix_errno);
if (!o_errcode)
if (lenargs >= 1) {
Py_INCREF(PyTuple_GET_ITEM(args, 0));
- Py_SETREF(self->msg, PyTuple_GET_ITEM(args, 0));
+ Py_XSETREF(self->msg, PyTuple_GET_ITEM(args, 0));
}
if (lenargs == 2) {
info = PyTuple_GET_ITEM(args, 1);
}
Py_INCREF(PyTuple_GET_ITEM(info, 0));
- Py_SETREF(self->filename, PyTuple_GET_ITEM(info, 0));
+ Py_XSETREF(self->filename, PyTuple_GET_ITEM(info, 0));
Py_INCREF(PyTuple_GET_ITEM(info, 1));
- Py_SETREF(self->lineno, PyTuple_GET_ITEM(info, 1));
+ Py_XSETREF(self->lineno, PyTuple_GET_ITEM(info, 1));
Py_INCREF(PyTuple_GET_ITEM(info, 2));
- Py_SETREF(self->offset, PyTuple_GET_ITEM(info, 2));
+ Py_XSETREF(self->offset, PyTuple_GET_ITEM(info, 2));
Py_INCREF(PyTuple_GET_ITEM(info, 3));
- Py_SETREF(self->text, PyTuple_GET_ITEM(info, 3));
+ Py_XSETREF(self->text, PyTuple_GET_ITEM(info, 3));
Py_DECREF(info);
}
PyObject *obj = PyString_FromString(value);
if (!obj)
return -1;
- Py_SETREF(*attr, obj);
+ Py_XSETREF(*attr, obj);
return 0;
}
oerrors = Py_None;
Py_INCREF(Py_None);
}
- Py_SETREF(file->f_encoding, str);
- Py_SETREF(file->f_errors, oerrors);
+ Py_XSETREF(file->f_encoding, str);
+ Py_XSETREF(file->f_errors, oerrors);
return 1;
}
}
} else if (values[j] != value) {
Py_XINCREF(value);
- Py_SETREF(values[j], value);
+ Py_XSETREF(values[j], value);
}
Py_XDECREF(value);
}
PyErr_SetString(PyExc_SystemError, "non-tuple default args");
return -1;
}
- Py_SETREF(((PyFunctionObject *)op)->func_defaults, defaults);
+ Py_XSETREF(((PyFunctionObject *)op)->func_defaults, defaults);
return 0;
}
closure->ob_type->tp_name);
return -1;
}
- Py_SETREF(((PyFunctionObject *)op)->func_closure, closure);
+ Py_XSETREF(((PyFunctionObject *)op)->func_closure, closure);
return 0;
}
if (name != Py_None) {
Py_INCREF(name);
- Py_SETREF(newfunc->func_name, name);
+ Py_XSETREF(newfunc->func_name, name);
}
if (defaults != Py_None) {
Py_INCREF(defaults);
return;
}
v = string_concat((PyStringObject *) *pv, w);
- Py_SETREF(*pv, v);
+ Py_XSETREF(*pv, v);
}
void
t = PyDict_GetItem(interned, (PyObject *)s);
if (t) {
Py_INCREF(t);
- Py_SETREF(*p, t);
+ Py_XSETREF(*p, t);
return;
}
for (i = 0; i < (1 << MCACHE_SIZE_EXP); i++) {
method_cache[i].value = NULL;
Py_INCREF(Py_None);
- Py_SETREF(method_cache[i].name, Py_None);
+ Py_XSETREF(method_cache[i].name, Py_None);
}
/* mark all version tags as invalid */
PyType_Modified(&PyBaseObject_Type);
return -1;
Py_UNICODE_COPY(w->str, v->str,
length < v->length ? length : v->length);
- Py_SETREF(*unicode, w);
+ Py_XSETREF(*unicode, w);
return 0;
}
goto handle_error;
}
else if (!is_true) {
- Py_SETREF(*filename, PyString_FromString("__main__"));
+ Py_XSETREF(*filename, PyString_FromString("__main__"));
if (*filename == NULL)
goto handle_error;
}
Py_INCREF(self);
func = PyMethod_GET_FUNCTION(func);
Py_INCREF(func);
- Py_SETREF(*pfunc, self);
+ Py_XSETREF(*pfunc, self);
na++;
n++;
} else
s->lineno))
return 0;
Py_INCREF(s->v.ClassDef.name);
- Py_SETREF(c->u->u_private, s->v.ClassDef.name);
+ Py_XSETREF(c->u->u_private, s->v.ClassDef.name);
str = PyString_InternFromString("__name__");
if (!str || !compiler_nameop(c, str, Load)) {
Py_XDECREF(str);
--tstate->recursion_depth;
/* throw away the old exception and use the recursion error instead */
Py_INCREF(PyExc_RuntimeError);
- Py_SETREF(*exc, PyExc_RuntimeError);
+ Py_XSETREF(*exc, PyExc_RuntimeError);
Py_INCREF(PyExc_RecursionErrorInst);
- Py_SETREF(*val, PyExc_RecursionErrorInst);
+ Py_XSETREF(*val, PyExc_RecursionErrorInst);
/* just keeping the old traceback */
return;
}