mirror of https://github.com/python/cpython.git
Issue #3129: Trailing digits in format string are no longer ignored.
This commit is contained in:
parent
9b88b916a9
commit
177e8530cb
|
@ -443,7 +443,7 @@ def test_pack_into(self):
|
||||||
|
|
||||||
# Test bogus offset (issue 3694)
|
# Test bogus offset (issue 3694)
|
||||||
sb = small_buf
|
sb = small_buf
|
||||||
self.assertRaises(TypeError, struct.pack_into, b'1', sb, None)
|
self.assertRaises(TypeError, struct.pack_into, b'', sb, None)
|
||||||
|
|
||||||
def test_pack_into_fn(self):
|
def test_pack_into_fn(self):
|
||||||
test_string = b'Reykjavik rocks, eow!'
|
test_string = b'Reykjavik rocks, eow!'
|
||||||
|
@ -510,6 +510,32 @@ def test_bool(self):
|
||||||
def test_crasher(self):
|
def test_crasher(self):
|
||||||
self.assertRaises(MemoryError, struct.pack, "357913941b", "a")
|
self.assertRaises(MemoryError, struct.pack, "357913941b", "a")
|
||||||
|
|
||||||
|
def test_trailing_counter(self):
|
||||||
|
store = array.array('b', b' '*100)
|
||||||
|
|
||||||
|
# format lists containing only count spec should result in an error
|
||||||
|
self.assertRaises(struct.error, struct.pack, '12345')
|
||||||
|
self.assertRaises(struct.error, struct.unpack, '12345', '')
|
||||||
|
self.assertRaises(struct.error, struct.pack_into, '12345', store, 0)
|
||||||
|
self.assertRaises(struct.error, struct.unpack_from, '12345', store, 0)
|
||||||
|
|
||||||
|
# Format lists with trailing count spec should result in an error
|
||||||
|
self.assertRaises(struct.error, struct.pack, 'c12345', 'x')
|
||||||
|
self.assertRaises(struct.error, struct.unpack, 'c12345', 'x')
|
||||||
|
self.assertRaises(struct.error, struct.pack_into, 'c12345', store, 0,
|
||||||
|
'x')
|
||||||
|
self.assertRaises(struct.error, struct.unpack_from, 'c12345', store,
|
||||||
|
0)
|
||||||
|
|
||||||
|
# Mixed format tests
|
||||||
|
self.assertRaises(struct.error, struct.pack, '14s42', 'spam and eggs')
|
||||||
|
self.assertRaises(struct.error, struct.unpack, '14s42',
|
||||||
|
'spam and eggs')
|
||||||
|
self.assertRaises(struct.error, struct.pack_into, '14s42', store, 0,
|
||||||
|
'spam and eggs')
|
||||||
|
self.assertRaises(struct.error, struct.unpack_from, '14s42', store, 0)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def test_main():
|
def test_main():
|
||||||
run_unittest(StructTest)
|
run_unittest(StructTest)
|
||||||
|
|
|
@ -1283,6 +1283,10 @@ Library
|
||||||
Extension Modules
|
Extension Modules
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #3129: Trailing digits in format string are no longer ignored.
|
||||||
|
For example, "1" or "ilib123" are now invalid formats and cause
|
||||||
|
``struct.error`` to be raised.
|
||||||
|
|
||||||
- Issue #7384: If the system readline library is linked against ncurses,
|
- Issue #7384: If the system readline library is linked against ncurses,
|
||||||
the curses module must be linked against ncurses as well. Otherwise it
|
the curses module must be linked against ncurses as well. Otherwise it
|
||||||
is not safe to load both the readline and curses modules in an application.
|
is not safe to load both the readline and curses modules in an application.
|
||||||
|
|
|
@ -1195,8 +1195,11 @@ prepare_s(PyStructObject *self)
|
||||||
}
|
}
|
||||||
num = x;
|
num = x;
|
||||||
}
|
}
|
||||||
if (c == '\0')
|
if (c == '\0') {
|
||||||
break;
|
PyErr_SetString(StructError,
|
||||||
|
"repeat count given without format specifier");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
num = 1;
|
num = 1;
|
||||||
|
|
Loading…
Reference in New Issue