Skip to content

Commit c81dd70

Browse files
committed
Update
1 parent c8b531d commit c81dd70

File tree

9 files changed

+10
-4
lines changed

9 files changed

+10
-4
lines changed

Modules/_abc.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -875,14 +875,17 @@ subclasscheck_check_registry(_abc_data *impl, PyObject *subclass,
875875
if (PyWeakref_GetRef(key, &rkey) < 0) {
876876
// Someone inject non-weakref type in the registry.
877877
ret = -1;
878+
Py_DECREF(key);
878879
break;
879880
}
880881

881882
if (rkey == NULL) {
883+
Py_DECREF(key);
882884
continue;
883885
}
884886
int r = PyObject_IsSubclass(subclass, rkey);
885887
Py_DECREF(rkey);
888+
Py_DECREF(key);
886889
if (r < 0) {
887890
ret = -1;
888891
break;

Modules/_pickle.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3418,7 +3418,6 @@ save_set(PickleState *state, PicklerObject *self, PyObject *obj)
34183418
int err = 0;
34193419
Py_BEGIN_CRITICAL_SECTION(obj);
34203420
while (_PySet_NextEntry(obj, &ppos, &item, &hash)) {
3421-
Py_INCREF(item);
34223421
err = save(state, self, item, 0);
34233422
Py_CLEAR(item);
34243423
if (err < 0)

Objects/codeobject.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2352,12 +2352,14 @@ _PyCode_ConstantKey(PyObject *op)
23522352

23532353
item_key = _PyCode_ConstantKey(item);
23542354
if (item_key == NULL) {
2355+
Py_DECREF(item);
23552356
Py_DECREF(tuple);
23562357
return NULL;
23572358
}
23582359

23592360
assert(i < len);
23602361
PyTuple_SET_ITEM(tuple, i, item_key);
2362+
Py_DECREF(item);
23612363
i++;
23622364
}
23632365
set = PyFrozenSet_New(tuple);

Objects/dictobject.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2981,7 +2981,7 @@ dict_set_fromkeys(PyInterpreterState *interp, PyDictObject *mp,
29812981

29822982
_Py_CRITICAL_SECTION_ASSERT_OBJECT_LOCKED(iterable);
29832983
while (_PySet_NextEntry(iterable, &pos, &key, &hash)) {
2984-
if (insertdict(interp, mp, Py_NewRef(key), hash, Py_NewRef(value))) {
2984+
if (insertdict(interp, mp, key, hash, Py_NewRef(value))) {
29852985
Py_DECREF(mp);
29862986
mp = NULL;
29872987
break;

Objects/listobject.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1289,7 +1289,6 @@ list_extend_set(PyListObject *self, PySetObject *other)
12891289
PyObject **dest = self->ob_item + m;
12901290
Py_BEGIN_CRITICAL_SECTION(other);
12911291
while (_PySet_NextEntry((PyObject *)other, &setpos, &key, &hash)) {
1292-
Py_INCREF(key);
12931292
FT_ATOMIC_STORE_PTR_RELEASE(*dest, key);
12941293
dest++;
12951294
}

Objects/setobject.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2669,7 +2669,7 @@ _PySet_NextEntry_lock_held(PyObject *set, Py_ssize_t *pos, PyObject **key, Py_ha
26692669
if (ret == 0) {
26702670
return 0;
26712671
}
2672-
*key = entry->key;
2672+
*key = Py_NewRef(entry->key);
26732673
*hash = entry->hash;
26742674
return 1;
26752675
}

Python/compile.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -922,6 +922,7 @@ merge_consts_recursive(PyObject *const_cache, PyObject *o)
922922
Py_hash_t hash;
923923
while (_PyFrozenSet_NextEntry(o, &pos, &item, &hash)) {
924924
PyObject *k = merge_consts_recursive(const_cache, item);
925+
Py_DECREF(item);
925926
if (k == NULL) {
926927
Py_DECREF(tuple);
927928
Py_DECREF(key);

Python/marshal.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -542,6 +542,7 @@ w_complex_object(PyObject *v, char flag, WFILE *p)
542542
}
543543
PyObject *pair = PyTuple_Pack(2, dump, value);
544544
Py_DECREF(dump);
545+
Py_DECREF(value);
545546
if (pair == NULL) {
546547
p->error = WFERR_NOMEMORY;
547548
break;

Python/pylifecycle.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2916,6 +2916,7 @@ _Py_DumpExtensionModules(int fd, PyInterpreterState *interp)
29162916
&& PyUnicode_Compare(key, item) == 0)
29172917
{
29182918
is_stdlib_ext = 1;
2919+
Py_DECREF(item);
29192920
break;
29202921
}
29212922
}

0 commit comments

Comments
 (0)