Skip to content

Commit 3d37d99

Browse files
committed
Use PyDict_Pop()
1 parent 8fb0bfb commit 3d37d99

File tree

7 files changed

+20
-16
lines changed

7 files changed

+20
-16
lines changed

Modules/_threadmodule.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -967,12 +967,12 @@ local_clear(localobject *self)
967967
HEAD_UNLOCK(runtime);
968968
while (tstate) {
969969
if (tstate->dict) {
970-
PyObject *v = _PyDict_Pop(tstate->dict, self->key, Py_None);
971-
if (v != NULL) {
972-
Py_DECREF(v);
970+
PyObject *v;
971+
if (PyDict_Pop(tstate->dict, self->key, Py_None, &v) < 0) {
972+
PyErr_Clear();
973973
}
974974
else {
975-
PyErr_Clear();
975+
Py_DECREF(v);
976976
}
977977
}
978978
HEAD_LOCK(runtime);

Modules/socketmodule.c

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -396,11 +396,12 @@ remove_unusable_flags(PyObject *m)
396396
if (flag_name == NULL) {
397397
return -1;
398398
}
399-
PyObject *v = _PyDict_Pop(dict, flag_name, Py_None);
400-
Py_DECREF(flag_name);
401-
if (v == NULL) {
399+
PyObject *v;
400+
if (PyDict_Pop(dict, flag_name, Py_None, &v) < 0) {
401+
Py_DECREF(flag_name);
402402
return -1;
403403
}
404+
Py_DECREF(flag_name);
404405
Py_DECREF(v);
405406
}
406407
}

Objects/dictobject.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3493,7 +3493,9 @@ static PyObject *
34933493
dict_pop_impl(PyDictObject *self, PyObject *key, PyObject *default_value)
34943494
/*[clinic end generated code: output=3abb47b89f24c21c input=e221baa01044c44c]*/
34953495
{
3496-
return _PyDict_Pop((PyObject*)self, key, default_value);
3496+
PyObject *result;
3497+
PyDict_Pop((PyObject*)self, key, default_value, &result);
3498+
return result;
34973499
}
34983500

34993501
/*[clinic input]

Objects/odictobject.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1049,7 +1049,8 @@ _odict_popkey_hash(PyObject *od, PyObject *key, PyObject *failobj,
10491049
return NULL;
10501050
}
10511051
/* Now delete the value from the dict. */
1052-
(void)_PyDict_Pop_KnownHash((PyDictObject *)od, key, hash, failobj, &value);
1052+
(void)_PyDict_Pop_KnownHash((PyDictObject *)od, key, hash,
1053+
failobj, &value);
10531054
}
10541055
else if (value == NULL && !PyErr_Occurred()) {
10551056
/* Apply the fallback value, if necessary. */

Objects/structseq.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
*/
99

1010
#include "Python.h"
11-
#include "pycore_dict.h" // _PyDict_Pop()
1211
#include "pycore_initconfig.h" // _PyStatus_OK()
1312
#include "pycore_modsupport.h" // _PyArg_NoPositional()
1413
#include "pycore_object.h" // _PyObject_GC_TRACK()
@@ -421,11 +420,12 @@ structseq_replace(PyStructSequence *self, PyObject *args, PyObject *kwargs)
421420
if (!key) {
422421
goto error;
423422
}
424-
PyObject *ob = _PyDict_Pop(kwargs, key, self->ob_item[i]);
425-
Py_DECREF(key);
426-
if (!ob) {
423+
PyObject *ob;
424+
if (PyDict_Pop(kwargs, key, self->ob_item[i], &ob) < 0) {
425+
Py_DECREF(key);
427426
goto error;
428427
}
428+
Py_DECREF(key);
429429
result->ob_item[i] = ob;
430430
}
431431
// Check if there are any unexpected fields.

Python/import.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,8 @@ remove_module(PyThreadState *tstate, PyObject *name)
395395

396396
PyObject *modules = MODULES(tstate->interp);
397397
if (PyDict_CheckExact(modules)) {
398-
PyObject *mod = _PyDict_Pop(modules, name, Py_None);
398+
PyObject *mod;
399+
(void)PyDict_Pop(modules, name, Py_None, &mod);
399400
Py_XDECREF(mod);
400401
}
401402
else if (PyMapping_DelItem(modules, name) < 0) {

Python/sysmodule.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,7 @@ sys_set_object(PyInterpreterState *interp, PyObject *key, PyObject *v)
125125
}
126126
PyObject *sd = interp->sysdict;
127127
if (v == NULL) {
128-
v = _PyDict_Pop(sd, key, Py_None);
129-
if (v == NULL) {
128+
if (PyDict_Pop(sd, key, Py_None, &v) < 0) {
130129
return -1;
131130
}
132131
Py_DECREF(v);

0 commit comments

Comments
 (0)