mirror of
https://github.com/python/cpython.git
synced 2025-10-04 14:15:45 +00:00
bpo-28598: Support __rmod__ for RHS subclasses of str in % string formatting operations (#94)
This commit is contained in:
parent
b945e0784f
commit
bc144f0abf
3 changed files with 21 additions and 3 deletions
|
@ -1545,9 +1545,15 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
TARGET(BINARY_MODULO) {
|
||||
PyObject *divisor = POP();
|
||||
PyObject *dividend = TOP();
|
||||
PyObject *res = PyUnicode_CheckExact(dividend) ?
|
||||
PyUnicode_Format(dividend, divisor) :
|
||||
PyNumber_Remainder(dividend, divisor);
|
||||
PyObject *res;
|
||||
if (PyUnicode_CheckExact(dividend) && (
|
||||
!PyUnicode_Check(divisor) || PyUnicode_CheckExact(divisor))) {
|
||||
/* fast path; string formatting, but not if the RHS is a str subclass
|
||||
(see issue28598) */
|
||||
res = PyUnicode_Format(dividend, divisor);
|
||||
} else {
|
||||
res = PyNumber_Remainder(dividend, divisor);
|
||||
}
|
||||
Py_DECREF(divisor);
|
||||
Py_DECREF(dividend);
|
||||
SET_TOP(res);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue