aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/tools/python3/src/Objects/setobject.c
diff options
context:
space:
mode:
authorshadchin <shadchin@yandex-team.com>2024-02-12 07:53:52 +0300
committershadchin <shadchin@yandex-team.com>2024-02-12 08:07:36 +0300
commitce1b7ca3171f9158180640c6a02a74b4afffedea (patch)
treee47c1e8391b1b0128262c1e9b1e6ed4c8fff2348 /contrib/tools/python3/src/Objects/setobject.c
parent57350d96f030db90f220ce50ee591d5c5d403df7 (diff)
downloadydb-ce1b7ca3171f9158180640c6a02a74b4afffedea.tar.gz
Update Python from 3.11.8 to 3.12.2
Diffstat (limited to 'contrib/tools/python3/src/Objects/setobject.c')
-rw-r--r--contrib/tools/python3/src/Objects/setobject.c66
1 files changed, 27 insertions, 39 deletions
diff --git a/contrib/tools/python3/src/Objects/setobject.c b/contrib/tools/python3/src/Objects/setobject.c
index 5fcc957f49..763f9a3d20 100644
--- a/contrib/tools/python3/src/Objects/setobject.c
+++ b/contrib/tools/python3/src/Objects/setobject.c
@@ -588,8 +588,7 @@ set_merge(PySetObject *so, PyObject *otherset)
key = other_entry->key;
if (key != NULL) {
assert(so_entry->key == NULL);
- Py_INCREF(key);
- so_entry->key = key;
+ so_entry->key = Py_NewRef(key);
so_entry->hash = other_entry->hash;
}
}
@@ -607,8 +606,8 @@ set_merge(PySetObject *so, PyObject *otherset)
for (i = other->mask + 1; i > 0 ; i--, other_entry++) {
key = other_entry->key;
if (key != NULL && key != dummy) {
- Py_INCREF(key);
- set_insert_clean(newtable, newmask, key, other_entry->hash);
+ set_insert_clean(newtable, newmask, Py_NewRef(key),
+ other_entry->hash);
}
}
return 0;
@@ -820,8 +819,7 @@ static PyObject *setiter_iternext(setiterobject *si)
goto fail;
si->len--;
key = entry[i].key;
- Py_INCREF(key);
- return key;
+ return Py_NewRef(key);
fail:
si->si_set = NULL;
@@ -868,8 +866,7 @@ set_iter(PySetObject *so)
setiterobject *si = PyObject_GC_New(setiterobject, &PySetIter_Type);
if (si == NULL)
return NULL;
- Py_INCREF(so);
- si->si_set = so;
+ si->si_set = (PySetObject*)Py_NewRef(so);
si->si_used = so->used;
si->si_pos = 0;
si->len = so->used;
@@ -997,8 +994,7 @@ make_new_frozenset(PyTypeObject *type, PyObject *iterable)
if (iterable != NULL && PyFrozenSet_CheckExact(iterable)) {
/* frozenset(f) is idempotent */
- Py_INCREF(iterable);
- return iterable;
+ return Py_NewRef(iterable);
}
return make_new_set(type, iterable);
}
@@ -1100,8 +1096,7 @@ static PyObject *
frozenset_copy(PySetObject *so, PyObject *Py_UNUSED(ignored))
{
if (PyFrozenSet_CheckExact(so)) {
- Py_INCREF(so);
- return (PyObject *)so;
+ return Py_NewRef(so);
}
return set_copy(so, NULL);
}
@@ -1173,8 +1168,7 @@ set_ior(PySetObject *so, PyObject *other)
if (set_update_internal(so, other))
return NULL;
- Py_INCREF(so);
- return (PyObject *)so;
+ return Py_NewRef(so);
}
static PyObject *
@@ -1264,12 +1258,11 @@ static PyObject *
set_intersection_multi(PySetObject *so, PyObject *args)
{
Py_ssize_t i;
- PyObject *result = (PyObject *)so;
if (PyTuple_GET_SIZE(args) == 0)
return set_copy(so, NULL);
- Py_INCREF(so);
+ PyObject *result = Py_NewRef(so);
for (i=0 ; i<PyTuple_GET_SIZE(args) ; i++) {
PyObject *other = PyTuple_GET_ITEM(args, i);
PyObject *newresult = set_intersection((PySetObject *)result, other);
@@ -1277,8 +1270,7 @@ set_intersection_multi(PySetObject *so, PyObject *args)
Py_DECREF(result);
return NULL;
}
- Py_DECREF(result);
- result = newresult;
+ Py_SETREF(result, newresult);
}
return result;
}
@@ -1336,8 +1328,7 @@ set_iand(PySetObject *so, PyObject *other)
if (result == NULL)
return NULL;
Py_DECREF(result);
- Py_INCREF(so);
- return (PyObject *)so;
+ return Py_NewRef(so);
}
static PyObject *
@@ -1609,8 +1600,7 @@ set_isub(PySetObject *so, PyObject *other)
Py_RETURN_NOTIMPLEMENTED;
if (set_difference_update_internal(so, other))
return NULL;
- Py_INCREF(so);
- return (PyObject *)so;
+ return Py_NewRef(so);
}
static PyObject *
@@ -1647,8 +1637,7 @@ set_symmetric_difference_update(PySetObject *so, PyObject *other)
}
if (PyAnySet_Check(other)) {
- Py_INCREF(other);
- otherset = (PySetObject *)other;
+ otherset = (PySetObject *)Py_NewRef(other);
} else {
otherset = (PySetObject *)make_new_set_basetype(Py_TYPE(so), other);
if (otherset == NULL)
@@ -1723,8 +1712,7 @@ set_ixor(PySetObject *so, PyObject *other)
if (result == NULL)
return NULL;
Py_DECREF(result);
- Py_INCREF(so);
- return (PyObject *)so;
+ return Py_NewRef(so);
}
static PyObject *
@@ -1735,13 +1723,13 @@ set_issubset(PySetObject *so, PyObject *other)
int rv;
if (!PyAnySet_Check(other)) {
- PyObject *tmp, *result;
- tmp = make_new_set(&PySet_Type, other);
- if (tmp == NULL)
+ PyObject *tmp = set_intersection(so, other);
+ if (tmp == NULL) {
return NULL;
- result = set_issubset(so, tmp);
+ }
+ int result = (PySet_GET_SIZE(tmp) == PySet_GET_SIZE(so));
Py_DECREF(tmp);
- return result;
+ return PyBool_FromLong(result);
}
if (PySet_GET_SIZE(so) > PySet_GET_SIZE(other))
Py_RETURN_FALSE;
@@ -1977,12 +1965,11 @@ done:
static PyObject *
set_sizeof(PySetObject *so, PyObject *Py_UNUSED(ignored))
{
- Py_ssize_t res;
-
- res = _PyObject_SIZE(Py_TYPE(so));
- if (so->table != so->smalltable)
- res = res + (so->mask + 1) * sizeof(setentry);
- return PyLong_FromSsize_t(res);
+ size_t res = _PyObject_SIZE(Py_TYPE(so));
+ if (so->table != so->smalltable) {
+ res += ((size_t)so->mask + 1) * sizeof(setentry);
+ }
+ return PyLong_FromSize_t(res);
}
PyDoc_STRVAR(sizeof_doc, "S.__sizeof__() -> size of S in memory, in bytes");
@@ -2564,6 +2551,7 @@ static PyTypeObject _PySetDummy_Type = {
};
static PyObject _dummy_struct = {
- _PyObject_EXTRA_INIT
- 2, &_PySetDummy_Type
+ _PyObject_EXTRA_INIT
+ { _Py_IMMORTAL_REFCNT },
+ &_PySetDummy_Type
};