mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
Fix SF # 635969, No error "not all arguments converted"
When mwh added extended slicing, strings and unicode became mappings. Thus, dict was set which prevented an error when doing: newstr = 'format without a percent' % string_value This fix raises an exception again when there are no formats and % with a string value.
This commit is contained in:
parent
0b9e3f750c
commit
80a1bf4b5d
3 changed files with 12 additions and 2 deletions
|
@ -221,6 +221,14 @@ if have_unicode:
|
||||||
|
|
||||||
test_exc('%d', '1', TypeError, "int argument required")
|
test_exc('%d', '1', TypeError, "int argument required")
|
||||||
test_exc('%g', '1', TypeError, "float argument required")
|
test_exc('%g', '1', TypeError, "float argument required")
|
||||||
|
test_exc('no format', '1', TypeError,
|
||||||
|
"not all arguments converted during string formatting")
|
||||||
|
test_exc('no format', u'1', TypeError,
|
||||||
|
"not all arguments converted during string formatting")
|
||||||
|
test_exc(u'no format', '1', TypeError,
|
||||||
|
"not all arguments converted during string formatting")
|
||||||
|
test_exc(u'no format', u'1', TypeError,
|
||||||
|
"not all arguments converted during string formatting")
|
||||||
|
|
||||||
if sys.maxint == 2**32-1:
|
if sys.maxint == 2**32-1:
|
||||||
# crashes 2.2.1 and earlier:
|
# crashes 2.2.1 and earlier:
|
||||||
|
|
|
@ -3622,7 +3622,8 @@ PyString_Format(PyObject *format, PyObject *args)
|
||||||
arglen = -1;
|
arglen = -1;
|
||||||
argidx = -2;
|
argidx = -2;
|
||||||
}
|
}
|
||||||
if (args->ob_type->tp_as_mapping && !PyTuple_Check(args))
|
if (args->ob_type->tp_as_mapping && !PyTuple_Check(args) &&
|
||||||
|
!PyObject_TypeCheck(args, &PyBaseString_Type))
|
||||||
dict = args;
|
dict = args;
|
||||||
while (--fmtcnt >= 0) {
|
while (--fmtcnt >= 0) {
|
||||||
if (*fmt != '%') {
|
if (*fmt != '%') {
|
||||||
|
|
|
@ -6181,7 +6181,8 @@ PyObject *PyUnicode_Format(PyObject *format,
|
||||||
arglen = -1;
|
arglen = -1;
|
||||||
argidx = -2;
|
argidx = -2;
|
||||||
}
|
}
|
||||||
if (args->ob_type->tp_as_mapping && !PyTuple_Check(args))
|
if (args->ob_type->tp_as_mapping && !PyTuple_Check(args) &&
|
||||||
|
!PyObject_TypeCheck(args, &PyBaseString_Type))
|
||||||
dict = args;
|
dict = args;
|
||||||
|
|
||||||
while (--fmtcnt >= 0) {
|
while (--fmtcnt >= 0) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue