classobject.c moduleobject.c stdwinmodule.c xxobject.c:
raise AttributeError, not KeyError, when attribute deletion fails.
sunaudiodevmodule.c: check for deletion before calling setmember.
diff --git a/Objects/xxobject.c b/Objects/xxobject.c
index 7ab7a73..8471893 100644
--- a/Objects/xxobject.c
+++ b/Objects/xxobject.c
@@ -110,8 +110,13 @@
 		if (xp->x_attr == NULL)
 			return -1;
 	}
-	if (v == NULL)
-		return dictremove(xp->x_attr, name);
+	if (v == NULL) {
+		int rv = dictremove(xp->x_attr, name);
+		if (rv < 0)
+			err_setstr(AttributeError,
+			        "delete non-existing xx attribute");
+		return rv;
+	}
 	else
 		return dictinsert(xp->x_attr, name, v);
 }