@@ -208,23 +208,35 @@ PyObject *CPyDict_KeysView(PyObject *dict) {
208
208
return _CPyDictView_New (dict , & PyDictKeys_Type );
209
209
}
210
210
_Py_IDENTIFIER (keys );
211
- return _PyObject_CallMethodIdNoArgs (dict , & PyId_keys );
211
+ PyObject * name = _PyUnicode_FromId (& PyId_keys ); /* borrowed */
212
+ if (name == NULL ) {
213
+ return NULL ;
214
+ }
215
+ return PyObject_CallMethodNoArgs (dict , name );
212
216
}
213
217
214
218
PyObject * CPyDict_ValuesView (PyObject * dict ) {
215
219
if (PyDict_CheckExact (dict )){
216
220
return _CPyDictView_New (dict , & PyDictValues_Type );
217
221
}
218
222
_Py_IDENTIFIER (values );
219
- return _PyObject_CallMethodIdNoArgs (dict , & PyId_values );
223
+ PyObject * name = _PyUnicode_FromId (& PyId_values ); /* borrowed */
224
+ if (name == NULL ) {
225
+ return NULL ;
226
+ }
227
+ return PyObject_CallMethodNoArgs (dict , name );
220
228
}
221
229
222
230
PyObject * CPyDict_ItemsView (PyObject * dict ) {
223
231
if (PyDict_CheckExact (dict )){
224
232
return _CPyDictView_New (dict , & PyDictItems_Type );
225
233
}
226
234
_Py_IDENTIFIER (items );
227
- return _PyObject_CallMethodIdNoArgs (dict , & PyId_items );
235
+ PyObject * name = _PyUnicode_FromId (& PyId_items ); /* borrowed */
236
+ if (name == NULL ) {
237
+ return NULL ;
238
+ }
239
+ return PyObject_CallMethodNoArgs (dict , name );
228
240
}
229
241
230
242
PyObject * CPyDict_Keys (PyObject * dict ) {
@@ -234,7 +246,11 @@ PyObject *CPyDict_Keys(PyObject *dict) {
234
246
// Inline generic fallback logic to also return a list.
235
247
PyObject * list = PyList_New (0 );
236
248
_Py_IDENTIFIER (keys );
237
- PyObject * view = _PyObject_CallMethodIdNoArgs (dict , & PyId_keys );
249
+ PyObject * name = _PyUnicode_FromId (& PyId_keys ); /* borrowed */
250
+ if (name == NULL ) {
251
+ return NULL ;
252
+ }
253
+ PyObject * view = PyObject_CallMethodNoArgs (dict , name );
238
254
if (view == NULL ) {
239
255
return NULL ;
240
256
}
@@ -253,7 +269,11 @@ PyObject *CPyDict_Values(PyObject *dict) {
253
269
// Inline generic fallback logic to also return a list.
254
270
PyObject * list = PyList_New (0 );
255
271
_Py_IDENTIFIER (values );
256
- PyObject * view = _PyObject_CallMethodIdNoArgs (dict , & PyId_values );
272
+ PyObject * name = _PyUnicode_FromId (& PyId_values ); /* borrowed */
273
+ if (name == NULL ) {
274
+ return NULL ;
275
+ }
276
+ PyObject * view = PyObject_CallMethodNoArgs (dict , name );
257
277
if (view == NULL ) {
258
278
return NULL ;
259
279
}
@@ -272,7 +292,11 @@ PyObject *CPyDict_Items(PyObject *dict) {
272
292
// Inline generic fallback logic to also return a list.
273
293
PyObject * list = PyList_New (0 );
274
294
_Py_IDENTIFIER (items );
275
- PyObject * view = _PyObject_CallMethodIdNoArgs (dict , & PyId_items );
295
+ PyObject * name = _PyUnicode_FromId (& PyId_items ); /* borrowed */
296
+ if (name == NULL ) {
297
+ return NULL ;
298
+ }
299
+ PyObject * view = PyObject_CallMethodNoArgs (dict , name );
276
300
if (view == NULL ) {
277
301
return NULL ;
278
302
}
@@ -289,7 +313,11 @@ char CPyDict_Clear(PyObject *dict) {
289
313
PyDict_Clear (dict );
290
314
} else {
291
315
_Py_IDENTIFIER (clear );
292
- PyObject * res = _PyObject_CallMethodIdNoArgs (dict , & PyId_clear );
316
+ PyObject * name = _PyUnicode_FromId (& PyId_clear ); /* borrowed */
317
+ if (name == NULL ) {
318
+ return 0 ;
319
+ }
320
+ PyObject * res = PyObject_CallMethodNoArgs (dict , name );
293
321
if (res == NULL ) {
294
322
return 0 ;
295
323
}
@@ -302,7 +330,11 @@ PyObject *CPyDict_Copy(PyObject *dict) {
302
330
return PyDict_Copy (dict );
303
331
}
304
332
_Py_IDENTIFIER (copy );
305
- return _PyObject_CallMethodIdNoArgs (dict , & PyId_copy );
333
+ PyObject * name = _PyUnicode_FromId (& PyId_copy ); /* borrowed */
334
+ if (name == NULL ) {
335
+ return NULL ;
336
+ }
337
+ return PyObject_CallMethodNoArgs (dict , name );
306
338
}
307
339
308
340
PyObject * CPyDict_GetKeysIter (PyObject * dict ) {
@@ -321,7 +353,11 @@ PyObject *CPyDict_GetItemsIter(PyObject *dict) {
321
353
return dict ;
322
354
}
323
355
_Py_IDENTIFIER (items );
324
- PyObject * view = _PyObject_CallMethodIdNoArgs (dict , & PyId_items );
356
+ PyObject * name = _PyUnicode_FromId (& PyId_items ); /* borrowed */
357
+ if (name == NULL ) {
358
+ return NULL ;
359
+ }
360
+ PyObject * view = PyObject_CallMethodNoArgs (dict , name );
325
361
if (view == NULL ) {
326
362
return NULL ;
327
363
}
@@ -337,7 +373,11 @@ PyObject *CPyDict_GetValuesIter(PyObject *dict) {
337
373
return dict ;
338
374
}
339
375
_Py_IDENTIFIER (values );
340
- PyObject * view = _PyObject_CallMethodIdNoArgs (dict , & PyId_values );
376
+ PyObject * name = _PyUnicode_FromId (& PyId_values ); /* borrowed */
377
+ if (name == NULL ) {
378
+ return NULL ;
379
+ }
380
+ PyObject * view = PyObject_CallMethodNoArgs (dict , name );
341
381
if (view == NULL ) {
342
382
return NULL ;
343
383
}
0 commit comments