mirror of https://github.com/python/cpython.git
#3694: fix an "XXX undetected error" leak in struct.
This commit is contained in:
parent
c8dcfb6cec
commit
75c3d6ff09
|
@ -524,6 +524,10 @@ def test_pack_into(self):
|
||||||
self.assertRaises(struct.error, s.pack_into, small_buf, 0, test_string)
|
self.assertRaises(struct.error, s.pack_into, small_buf, 0, test_string)
|
||||||
self.assertRaises(struct.error, s.pack_into, small_buf, 2, test_string)
|
self.assertRaises(struct.error, s.pack_into, small_buf, 2, test_string)
|
||||||
|
|
||||||
|
# Test bogus offset (issue 3694)
|
||||||
|
sb = small_buf
|
||||||
|
self.assertRaises(TypeError, struct.pack_into, b'1', 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!'
|
||||||
writable_buf = array.array('b', b' '*100)
|
writable_buf = array.array('b', b' '*100)
|
||||||
|
|
|
@ -1785,7 +1785,7 @@ s_pack_into(PyObject *self, PyObject *args)
|
||||||
assert( buffer_len >= 0 );
|
assert( buffer_len >= 0 );
|
||||||
|
|
||||||
/* Extract the offset from the first argument */
|
/* Extract the offset from the first argument */
|
||||||
offset = PyLong_AsSsize_t(PyTuple_GET_ITEM(args, 1));
|
offset = PyNumber_AsSsize_t(PyTuple_GET_ITEM(args, 1), PyExc_IndexError);
|
||||||
if (offset == -1 && PyErr_Occurred())
|
if (offset == -1 && PyErr_Occurred())
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue