if (keys->dk_usable <= 0) {
return DKIX_EMPTY;
}
- Py_INCREF(name);
/* Insert into new slot. */
keys->dk_version = 0;
Py_ssize_t hashpos = find_empty_slot(keys, hash);
PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(keys)[ix];
dictkeys_set_index(keys, hashpos, ix);
assert(ep->me_key == NULL);
- ep->me_key = name;
+ ep->me_key = Py_NewRef(name);
keys->dk_usable--;
keys->dk_nentries++;
}
int index = get_index_from_order(mp, i);
PyDictUnicodeEntry *ep = &oldentries[index];
assert(oldvalues->values[index] != NULL);
- Py_INCREF(ep->me_key);
- newentries[i].me_key = ep->me_key;
+ newentries[i].me_key = Py_NewRef(ep->me_key);
newentries[i].me_hash = unicode_get_hash(ep->me_key);
newentries[i].me_value = oldvalues->values[index];
}
int index = get_index_from_order(mp, i);
PyDictUnicodeEntry *ep = &oldentries[index];
assert(oldvalues->values[index] != NULL);
- Py_INCREF(ep->me_key);
- newentries[i].me_key = ep->me_key;
+ newentries[i].me_key = Py_NewRef(ep->me_key);
newentries[i].me_value = oldvalues->values[index];
}
build_indices_unicode(mp->ma_keys, newentries, numentries);
}
assert(key);
assert(value);
- Py_INCREF(key);
- Py_INCREF(value);
- return _PyDict_SetItem_Take2((PyDictObject *)op, key, value);
+ return _PyDict_SetItem_Take2((PyDictObject *)op,
+ Py_NewRef(key), Py_NewRef(value));
}
int
if (mp->ma_used == 0) {
if (deflt) {
- Py_INCREF(deflt);
- return deflt;
+ return Py_NewRef(deflt);
}
_PyErr_SetKeyError(key);
return NULL;
return NULL;
if (ix == DKIX_EMPTY || old_value == NULL) {
if (deflt) {
- Py_INCREF(deflt);
- return deflt;
+ return Py_NewRef(deflt);
}
_PyErr_SetKeyError(key);
return NULL;
if (((PyDictObject *)dict)->ma_used == 0) {
if (deflt) {
- Py_INCREF(deflt);
- return deflt;
+ return Py_NewRef(deflt);
}
_PyErr_SetKeyError(key);
return NULL;
}
while (_PyDict_Next(iterable, &pos, &key, &oldvalue, &hash)) {
- Py_INCREF(key);
- Py_INCREF(value);
- if (insertdict(mp, key, hash, value)) {
+ if (insertdict(mp, Py_NewRef(key), hash, Py_NewRef(value))) {
Py_DECREF(d);
return NULL;
}
}
while (_PySet_NextEntry(iterable, &pos, &key, &hash)) {
- Py_INCREF(key);
- Py_INCREF(value);
- if (insertdict(mp, key, hash, value)) {
+ if (insertdict(mp, Py_NewRef(key), hash, Py_NewRef(value))) {
Py_DECREF(d);
return NULL;
}
_PyErr_SetKeyError(key);
return NULL;
}
- Py_INCREF(value);
- return value;
+ return Py_NewRef(value);
}
static int
PyObject *key;
while (_PyDict_Next((PyObject*)mp, &pos, &key, NULL, NULL)) {
assert(j < n);
- Py_INCREF(key);
- PyList_SET_ITEM(v, j, key);
+ PyList_SET_ITEM(v, j, Py_NewRef(key));
j++;
}
assert(j == n);
PyObject *value;
while (_PyDict_Next((PyObject*)mp, &pos, NULL, &value, NULL)) {
assert(j < n);
- Py_INCREF(value);
- PyList_SET_ITEM(v, j, value);
+ PyList_SET_ITEM(v, j, Py_NewRef(value));
j++;
}
assert(j == n);
while (_PyDict_Next((PyObject*)mp, &pos, &key, &value, NULL)) {
assert(j < n);
PyObject *item = PyList_GET_ITEM(v, j);
- Py_INCREF(key);
- PyTuple_SET_ITEM(item, 0, key);
- Py_INCREF(value);
- PyTuple_SET_ITEM(item, 1, value);
+ PyTuple_SET_ITEM(item, 0, Py_NewRef(key));
+ PyTuple_SET_ITEM(item, 1, Py_NewRef(value));
j++;
}
assert(j == n);
Py_INCREF(key);
Py_INCREF(value);
if (override == 1) {
- Py_INCREF(key);
- Py_INCREF(value);
- err = insertdict(mp, key, hash, value);
+ err = insertdict(mp, Py_NewRef(key), hash, Py_NewRef(value));
}
else {
err = _PyDict_Contains_KnownHash(a, key, hash);
if (err == 0) {
- Py_INCREF(key);
- Py_INCREF(value);
- err = insertdict(mp, key, hash, value);
+ err = insertdict(mp, Py_NewRef(key), hash, Py_NewRef(value));
}
else if (err > 0) {
if (override != 0) {
dictkeys_incref(mp->ma_keys);
for (i = 0, n = size; i < n; i++) {
PyObject *value = mp->ma_values->values[i];
- Py_XINCREF(value);
- split_copy->ma_values->values[i] = value;
+ split_copy->ma_values->values[i] = Py_XNewRef(value);
}
if (_PyObject_GC_IS_TRACKED(mp))
_PyObject_GC_TRACK(split_copy);
}
else
res = Py_NotImplemented;
- Py_INCREF(res);
- return res;
+ return Py_NewRef(res);
}
/*[clinic input]
if (ix == DKIX_EMPTY || val == NULL) {
val = default_value;
}
- Py_INCREF(val);
- return val;
+ return Py_NewRef(val);
}
PyObject *
}
if (mp->ma_keys == Py_EMPTY_KEYS) {
- Py_INCREF(key);
- Py_INCREF(defaultobj);
- if (insert_to_emptydict(mp, key, hash, defaultobj) < 0) {
+ if (insert_to_emptydict(mp, Py_NewRef(key), hash,
+ Py_NewRef(defaultobj)) < 0) {
return NULL;
}
return defaultobj;
if (DK_IS_UNICODE(mp->ma_keys)) {
assert(PyUnicode_CheckExact(key));
PyDictUnicodeEntry *ep = &DK_UNICODE_ENTRIES(mp->ma_keys)[mp->ma_keys->dk_nentries];
- ep->me_key = key;
+ ep->me_key = Py_NewRef(key);
if (_PyDict_HasSplitTable(mp)) {
Py_ssize_t index = (int)mp->ma_keys->dk_nentries;
assert(index < SHARED_KEYS_MAX_SIZE);
assert(mp->ma_values->values[index] == NULL);
- mp->ma_values->values[index] = value;
+ mp->ma_values->values[index] = Py_NewRef(value);
_PyDictValues_AddToInsertionOrder(mp->ma_values, index);
}
else {
- ep->me_value = value;
+ ep->me_value = Py_NewRef(value);
}
}
else {
PyDictKeyEntry *ep = &DK_ENTRIES(mp->ma_keys)[mp->ma_keys->dk_nentries];
- ep->me_key = key;
+ ep->me_key = Py_NewRef(key);
ep->me_hash = hash;
- ep->me_value = value;
+ ep->me_value = Py_NewRef(value);
}
- Py_INCREF(key);
- Py_INCREF(value);
MAINTAIN_TRACKING(mp, key, value);
mp->ma_used++;
mp->ma_version_tag = new_version;
value = defaultobj;
assert(_PyDict_HasSplitTable(mp));
assert(mp->ma_values->values[ix] == NULL);
- Py_INCREF(value);
MAINTAIN_TRACKING(mp, key, value);
- mp->ma_values->values[ix] = value;
+ mp->ma_values->values[ix] = Py_NewRef(value);
_PyDictValues_AddToInsertionOrder(mp->ma_values, ix);
mp->ma_used++;
mp->ma_version_tag = new_version;
PyObject *val;
val = PyDict_SetDefault((PyObject *)self, key, default_value);
- Py_XINCREF(val);
- return val;
+ return Py_XNewRef(val);
}
static PyObject *
if (dict_update_arg(self, other)) {
return NULL;
}
- Py_INCREF(self);
- return self;
+ return Py_NewRef(self);
}
PyDoc_STRVAR(getitem__doc__,
if (di == NULL) {
return NULL;
}
- Py_INCREF(dict);
- di->di_dict = dict;
+ di->di_dict = (PyDictObject*)Py_NewRef(dict);
di->di_used = dict->ma_used;
di->len = dict->ma_used;
if (itertype == &PyDictRevIterKey_Type ||
}
di->di_pos = i+1;
di->len--;
- Py_INCREF(key);
- return key;
+ return Py_NewRef(key);
fail:
di->di_dict = NULL;
}
di->di_pos = i+1;
di->len--;
- Py_INCREF(value);
- return value;
+ return Py_NewRef(value);
fail:
di->di_dict = NULL;
}
di->di_pos = i+1;
di->len--;
- Py_INCREF(key);
- Py_INCREF(value);
result = di->di_result;
if (Py_REFCNT(result) == 1) {
PyObject *oldkey = PyTuple_GET_ITEM(result, 0);
PyObject *oldvalue = PyTuple_GET_ITEM(result, 1);
- PyTuple_SET_ITEM(result, 0, key); /* steals reference */
- PyTuple_SET_ITEM(result, 1, value); /* steals reference */
+ PyTuple_SET_ITEM(result, 0, Py_NewRef(key));
+ PyTuple_SET_ITEM(result, 1, Py_NewRef(value));
Py_INCREF(result);
Py_DECREF(oldkey);
Py_DECREF(oldvalue);
result = PyTuple_New(2);
if (result == NULL)
return NULL;
- PyTuple_SET_ITEM(result, 0, key); /* steals reference */
- PyTuple_SET_ITEM(result, 1, value); /* steals reference */
+ PyTuple_SET_ITEM(result, 0, Py_NewRef(key));
+ PyTuple_SET_ITEM(result, 1, Py_NewRef(value));
}
return result;
di->len--;
if (Py_IS_TYPE(di, &PyDictRevIterKey_Type)) {
- Py_INCREF(key);
- return key;
+ return Py_NewRef(key);
}
else if (Py_IS_TYPE(di, &PyDictRevIterValue_Type)) {
- Py_INCREF(value);
- return value;
+ return Py_NewRef(value);
}
else if (Py_IS_TYPE(di, &PyDictRevIterItem_Type)) {
- Py_INCREF(key);
- Py_INCREF(value);
result = di->di_result;
if (Py_REFCNT(result) == 1) {
PyObject *oldkey = PyTuple_GET_ITEM(result, 0);
PyObject *oldvalue = PyTuple_GET_ITEM(result, 1);
- PyTuple_SET_ITEM(result, 0, key); /* steals reference */
- PyTuple_SET_ITEM(result, 1, value); /* steals reference */
+ PyTuple_SET_ITEM(result, 0, Py_NewRef(key));
+ PyTuple_SET_ITEM(result, 1, Py_NewRef(value));
Py_INCREF(result);
Py_DECREF(oldkey);
Py_DECREF(oldvalue);
if (result == NULL) {
return NULL;
}
- PyTuple_SET_ITEM(result, 0, key); /* steals reference */
- PyTuple_SET_ITEM(result, 1, value); /* steals reference */
+ PyTuple_SET_ITEM(result, 0, Py_NewRef(key));
+ PyTuple_SET_ITEM(result, 1, Py_NewRef(value));
}
return result;
}
/* copy the iterator state */
dictiterobject tmp = *di;
Py_XINCREF(tmp.di_dict);
-
PyObject *list = PySequence_List((PyObject*)&tmp);
Py_XDECREF(tmp.di_dict);
if (list == NULL) {
dv = PyObject_GC_New(_PyDictViewObject, type);
if (dv == NULL)
return NULL;
- Py_INCREF(dict);
- dv->dv_dict = (PyDictObject *)dict;
+ dv->dv_dict = (PyDictObject *)Py_NewRef(dict);
_PyObject_GC_TRACK(dv);
return (PyObject *)dv;
}
if (ok < 0)
return NULL;
result = ok ? Py_True : Py_False;
- Py_INCREF(result);
- return result;
+ return Py_NewRef(result);
}
static PyObject *
}
}
PyObject *old_value = values->values[ix];
- Py_XINCREF(value);
- values->values[ix] = value;
+ values->values[ix] = Py_XNewRef(value);
if (old_value == NULL) {
if (value == NULL) {
PyErr_Format(PyExc_AttributeError,
return NULL;
}
PyObject *value = values->values[ix];
- Py_XINCREF(value);
- return value;
+ return Py_XNewRef(value);
}
int
}
}
}
- Py_XINCREF(dict);
- return dict;
+ return Py_XNewRef(dict);
}
int