From 4c0924bb24c32e18d1e3c030f8d1faef3c3c56c4 Mon Sep 17 00:00:00 2001 From: Philipp Hagemeister Date: Thu, 13 Nov 2014 15:28:42 +0100 Subject: [PATCH] [utils] Fix intlist_to_bytes in Python 2 (#4181) --- test/test_utils.py | 6 ++++++ youtube_dl/utils.py | 5 +---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/test/test_utils.py b/test/test_utils.py index 0c11d0438..a9649397f 100644 --- a/test/test_utils.py +++ b/test/test_utils.py @@ -46,6 +46,7 @@ from youtube_dl.utils import ( escape_url, js_to_json, get_filesystem_encoding, + intlist_to_bytes, ) @@ -350,5 +351,10 @@ class TestUtil(unittest.TestCase): self.assertEqual(clean_html('a:\nb'), 'a: b') self.assertEqual(clean_html('a:\n "b"'), 'a: "b"') + def test_intlist_to_bytes(self): + self.assertEqual( + intlist_to_bytes([0, 1, 127, 128, 255]), + b'\x00\x01\x7f\x80\xff') + if __name__ == '__main__': unittest.main() diff --git a/youtube_dl/utils.py b/youtube_dl/utils.py index d87e212ae..0b2ba39e2 100644 --- a/youtube_dl/utils.py +++ b/youtube_dl/utils.py @@ -843,10 +843,7 @@ def bytes_to_intlist(bs): def intlist_to_bytes(xs): if not xs: return b'' - if isinstance(chr(0), bytes): # Python 2 - return ''.join([chr(x) for x in xs]) - else: - return bytes(xs) + return struct.pack('%dB' % len(xs), *xs) # Cross-platform file locking