@@ -636,7 +636,7 @@ class cpp_function : public function {
636636 bool bad_arg = false ;
637637 for (; args_copied < args_to_copy; ++args_copied) {
638638 const argument_record *arg_rec = args_copied < func.args .size () ? &func.args [args_copied] : nullptr ;
639- if (kwargs_in && arg_rec && arg_rec->name && PyDict_GetItemString (kwargs_in, arg_rec->name )) {
639+ if (kwargs_in && arg_rec && arg_rec->name && dict_getitemstring (kwargs_in, arg_rec->name )) {
640640 bad_arg = true ;
641641 break ;
642642 }
@@ -684,15 +684,17 @@ class cpp_function : public function {
684684
685685 handle value;
686686 if (kwargs_in && arg_rec.name )
687- value = PyDict_GetItemString (kwargs.ptr (), arg_rec.name );
687+ value = dict_getitemstring (kwargs.ptr (), arg_rec.name );
688688
689689 if (value) {
690690 // Consume a kwargs value
691691 if (!copied_kwargs) {
692692 kwargs = reinterpret_steal<dict>(PyDict_Copy (kwargs.ptr ()));
693693 copied_kwargs = true ;
694694 }
695- PyDict_DelItemString (kwargs.ptr (), arg_rec.name );
695+ if (PyDict_DelItemString (kwargs.ptr (), arg_rec.name ) == -1 ) {
696+ throw error_already_set ();
697+ }
696698 } else if (arg_rec.value ) {
697699 value = arg_rec.value ;
698700 }
@@ -2139,7 +2141,7 @@ inline function get_type_override(const void *this_ptr, const type_info *this_ty
21392141 if (frame && (std::string) str (frame->f_code ->co_name ) == name &&
21402142 frame->f_code ->co_argcount > 0 ) {
21412143 PyFrame_FastToLocals (frame);
2142- PyObject *self_caller = PyDict_GetItem (
2144+ PyObject *self_caller = dict_getitem (
21432145 frame->f_locals , PyTuple_GET_ITEM (frame->f_code ->co_varnames , 0 ));
21442146 if (self_caller == self.ptr ())
21452147 return function ();
0 commit comments