@@ -237,13 +237,15 @@ gdbm_bool(PyObject *op)
237237// This function is needed to support PY_SSIZE_T_CLEAN.
238238// Return 1 on success, same to PyArg_Parse().
239239static int
240- parse_datum (PyObject * o , datum * d , const char * items_name )
240+ parse_datum (PyObject * o , datum * d , const char * item_name )
241241{
242242 Py_ssize_t size ;
243243 if (!PyArg_Parse (o , "s#" , & d -> dptr , & size )) {
244- PyErr_Format (PyExc_TypeError ,
245- "database %s must be bytes or str, not %T" ,
246- items_name , o );
244+ if (item_name ) {
245+ PyErr_Format (PyExc_TypeError ,
246+ "gdbm %s must be bytes or str, not '%T'" ,
247+ item_name , o );
248+ }
247249 return 0 ;
248250 }
249251 if (INT_MAX < size ) {
@@ -262,7 +264,7 @@ gdbm_subscript_lock_held(PyObject *op, PyObject *key)
262264 gdbmobject * dp = _gdbmobject_CAST (op );
263265 _gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
264266
265- if (!parse_datum (key , & krec , "keys" )) {
267+ if (!parse_datum (key , & krec , NULL )) {
266268 return NULL ;
267269 }
268270 if (dp -> di_dbm == NULL ) {
@@ -321,7 +323,7 @@ gdbm_ass_sub_lock_held(PyObject *op, PyObject *v, PyObject *w)
321323 gdbmobject * dp = _gdbmobject_CAST (op );
322324 _gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
323325
324- if (!parse_datum (v , & krec , "keys " )) {
326+ if (!parse_datum (v , & krec , "key " )) {
325327 return -1 ;
326328 }
327329 if (dp -> di_dbm == NULL ) {
@@ -342,7 +344,7 @@ gdbm_ass_sub_lock_held(PyObject *op, PyObject *v, PyObject *w)
342344 }
343345 }
344346 else {
345- if (!parse_datum (w , & drec , "values " )) {
347+ if (!parse_datum (w , & drec , "value " )) {
346348 return -1 ;
347349 }
348350 errno = 0 ;
@@ -490,8 +492,7 @@ gdbm_contains_lock_held(PyObject *self, PyObject *arg)
490492 }
491493 else if (!PyBytes_Check (arg )) {
492494 PyErr_Format (PyExc_TypeError ,
493- "gdbm key must be bytes or string, not %.100s" ,
494- Py_TYPE (arg )-> tp_name );
495+ "gdbm key must be bytes or str, not '%T'" , arg );
495496 return -1 ;
496497 }
497498 else {
0 commit comments