use the stricter PyMapping_Check (closes #15801)
diff --git a/Objects/stringobject.c b/Objects/stringobject.c
index fd2f630..7c4a86b 100644
--- a/Objects/stringobject.c
+++ b/Objects/stringobject.c
@@ -4254,7 +4254,7 @@
arglen = -1;
argidx = -2;
}
- if (Py_TYPE(args)->tp_as_mapping && !PyTuple_Check(args) &&
+ if (PyMapping_Check(args) && !PyTuple_Check(args) &&
!PyObject_TypeCheck(args, &PyBaseString_Type))
dict = args;
while (--fmtcnt >= 0) {
diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c
index 59b138a..d40f2e4 100644
--- a/Objects/unicodeobject.c
+++ b/Objects/unicodeobject.c
@@ -8275,7 +8275,7 @@
arglen = -1;
argidx = -2;
}
- if (Py_TYPE(args)->tp_as_mapping && !PyTuple_Check(args) &&
+ if (PyMapping_Check(args) && !PyTuple_Check(args) &&
!PyObject_TypeCheck(args, &PyBaseString_Type))
dict = args;