Skip to content

Commit 29f674f

Browse files
committed
fix split with empty bytes
1 parent d89ca3c commit 29f674f

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

tests/snippets/bytes.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,10 @@
355355
assert b"1 2 3".split(maxsplit=1) == [b"1", b"2 3"]
356356
assert b" 1 2 3 ".split() == [b"1", b"2", b"3"]
357357
assert b"k\ruh\nfz e f".split() == [b"k", b"uh", b"fz", b"e", b"f"]
358+
assert b"Two lines\n".split(b'\n') == [b'Two lines', b'']
359+
assert b"".split() == []
360+
assert b"".split(b"\n") == [b'']
361+
assert b"\n".split(b"\n") == [b'', b'']
358362

359363
SPLIT_FIXTURES = [
360364
[

vm/src/obj/objbyteinner.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,13 @@ impl PyByteInner {
837837
) -> PyResult<Vec<&[u8]>> {
838838
let (sep, maxsplit) = options.get_value(vm)?;
839839

840+
if self.elements.is_empty() {
841+
if !sep.is_empty() {
842+
return Ok(vec![&[]]);
843+
}
844+
return Ok(vec![]);
845+
}
846+
840847
if reverse {
841848
Ok(split_slice_reverse(&self.elements, &sep, maxsplit))
842849
} else {

0 commit comments

Comments
 (0)