Skip to content

Commit bbb799f

Browse files
committed
Resize pack_string with padding
1 parent 7338bb7 commit bbb799f

2 files changed

Lines changed: 14 additions & 2 deletions

File tree

tests/snippets/stdlib_struct.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,12 @@ def __index__(self):
5656

5757
data = struct.pack('B', Indexable(65))
5858
assert data == bytes([65])
59+
60+
data = struct.pack('5s', b"test1")
61+
assert data == b"test1"
62+
63+
data = struct.pack('3s', b"test2")
64+
assert data == b"tes"
65+
66+
data = struct.pack('7s', b"test3")
67+
assert data == b"test3\0\0"

vm/src/stdlib/pystruct.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -338,8 +338,11 @@ fn pack_string(
338338
data: &mut dyn Write,
339339
length: usize,
340340
) -> PyResult<()> {
341-
let v = PyBytesRef::try_from_object(vm, arg.clone())?;
342-
match data.write_all(&v.get_value()[..length]) {
341+
let mut v = PyBytesRef::try_from_object(vm, arg.clone())?
342+
.get_value()
343+
.to_vec();
344+
v.resize(length, 0);
345+
match data.write_all(&v) {
343346
Ok(_) => Ok(()),
344347
Err(e) => Err(new_struct_error(vm, format!("{:?}", e))),
345348
}

0 commit comments

Comments
 (0)