@@ -208,23 +208,35 @@ PyObject *CPyDict_KeysView(PyObject *dict) {
208208 return _CPyDictView_New (dict , & PyDictKeys_Type );
209209 }
210210 _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 );
212216}
213217
214218PyObject * CPyDict_ValuesView (PyObject * dict ) {
215219 if (PyDict_CheckExact (dict )){
216220 return _CPyDictView_New (dict , & PyDictValues_Type );
217221 }
218222 _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 );
220228}
221229
222230PyObject * CPyDict_ItemsView (PyObject * dict ) {
223231 if (PyDict_CheckExact (dict )){
224232 return _CPyDictView_New (dict , & PyDictItems_Type );
225233 }
226234 _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 );
228240}
229241
230242PyObject * CPyDict_Keys (PyObject * dict ) {
@@ -234,7 +246,11 @@ PyObject *CPyDict_Keys(PyObject *dict) {
234246 // Inline generic fallback logic to also return a list.
235247 PyObject * list = PyList_New (0 );
236248 _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 );
238254 if (view == NULL ) {
239255 return NULL ;
240256 }
@@ -253,7 +269,11 @@ PyObject *CPyDict_Values(PyObject *dict) {
253269 // Inline generic fallback logic to also return a list.
254270 PyObject * list = PyList_New (0 );
255271 _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 );
257277 if (view == NULL ) {
258278 return NULL ;
259279 }
@@ -272,7 +292,11 @@ PyObject *CPyDict_Items(PyObject *dict) {
272292 // Inline generic fallback logic to also return a list.
273293 PyObject * list = PyList_New (0 );
274294 _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 );
276300 if (view == NULL ) {
277301 return NULL ;
278302 }
@@ -289,7 +313,11 @@ char CPyDict_Clear(PyObject *dict) {
289313 PyDict_Clear (dict );
290314 } else {
291315 _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 );
293321 if (res == NULL ) {
294322 return 0 ;
295323 }
@@ -302,7 +330,11 @@ PyObject *CPyDict_Copy(PyObject *dict) {
302330 return PyDict_Copy (dict );
303331 }
304332 _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 );
306338}
307339
308340PyObject * CPyDict_GetKeysIter (PyObject * dict ) {
@@ -321,7 +353,11 @@ PyObject *CPyDict_GetItemsIter(PyObject *dict) {
321353 return dict ;
322354 }
323355 _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 );
325361 if (view == NULL ) {
326362 return NULL ;
327363 }
@@ -337,7 +373,11 @@ PyObject *CPyDict_GetValuesIter(PyObject *dict) {
337373 return dict ;
338374 }
339375 _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 );
341381 if (view == NULL ) {
342382 return NULL ;
343383 }
0 commit comments