diff --git a/telethon/utils.py b/telethon/utils.py index d570f8cb..9e71ef7d 100644 --- a/telethon/utils.py +++ b/telethon/utils.py @@ -1095,6 +1095,8 @@ def _rle_encode(string): count = 0 new += bytes([cur]) + if count != 0: + new += b'\0' + bytes([count]) return new diff --git a/tests/telethon/test_utils.py b/tests/telethon/test_utils.py index 99a46efb..f1ab33e9 100644 --- a/tests/telethon/test_utils.py +++ b/tests/telethon/test_utils.py @@ -52,3 +52,7 @@ def test_private_get_extension(): assert utils._get_extension(empty_buffer) == '' assert utils._get_extension(empty_buffer) == '' # make sure it did seek back assert utils._get_extension(CustomFd('foo')) == '' + + +def test_rle_encode_trailing_zeros(): + assert utils._rle_encode(b'\x12\x00\x00\x00\x00') == b'\x12\x00\x04'