From 4fb0b8bc25c52aae8dcb4353e69c1c88999a9a53 Mon Sep 17 00:00:00 2001 From: Xiang Zhang Date: Wed, 12 Dec 2018 20:46:55 +0800 Subject: bpo-33106: change dbm key deletion error for readonly file from KeyError to dbm.error (#6295) --- Modules/_gdbmmodule.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'Modules/_gdbmmodule.c') diff --git a/Modules/_gdbmmodule.c b/Modules/_gdbmmodule.c index 46bb59ac95..cc94e60745 100644 --- a/Modules/_gdbmmodule.c +++ b/Modules/_gdbmmodule.c @@ -186,14 +186,19 @@ dbm_ass_sub(dbmobject *dp, PyObject *v, PyObject *w) dp->di_size = -1; if (w == NULL) { if (gdbm_delete(dp->di_dbm, krec) < 0) { - PyErr_SetObject(PyExc_KeyError, v); + if (gdbm_errno == GDBM_ITEM_NOT_FOUND) { + PyErr_SetObject(PyExc_KeyError, v); + } + else { + PyErr_SetString(DbmError, gdbm_strerror(gdbm_errno)); + } return -1; } } else { if (!PyArg_Parse(w, "s#", &drec.dptr, &drec.dsize)) { PyErr_SetString(PyExc_TypeError, - "gdbm mappings have byte or string elements only"); + "gdbm mappings have bytes or string elements only"); return -1; } errno = 0; -- cgit v1.2.1