diff options
author | Zachary Turner <zturner@google.com> | 2015-12-02 23:07:33 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2015-12-02 23:07:33 +0000 |
commit | fe868acafa71515be4b4da0aaf33a8ecb9b080b7 (patch) | |
tree | 9fd54a5e6111511e0db5a907b2774d8a559eb5d3 /lldb/packages/Python/lldbsuite/test/dotest_channels.py | |
parent | 70497c696a91e7147d05898b56561edf990ba7a5 (diff) | |
download | bcm5719-llvm-fe868acafa71515be4b4da0aaf33a8ecb9b080b7.tar.gz bcm5719-llvm-fe868acafa71515be4b4da0aaf33a8ecb9b080b7.zip |
Fix test result serialization to use bytes.
llvm-svn: 254563
Diffstat (limited to 'lldb/packages/Python/lldbsuite/test/dotest_channels.py')
-rw-r--r-- | lldb/packages/Python/lldbsuite/test/dotest_channels.py | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/lldb/packages/Python/lldbsuite/test/dotest_channels.py b/lldb/packages/Python/lldbsuite/test/dotest_channels.py index 02605fe6bc5..a09cbff4983 100644 --- a/lldb/packages/Python/lldbsuite/test/dotest_channels.py +++ b/lldb/packages/Python/lldbsuite/test/dotest_channels.py @@ -44,7 +44,7 @@ class UnpicklingForwardingReaderChannel(asyncore.dispatcher): def __init__(self, file_object, async_map, forwarding_func): asyncore.dispatcher.__init__(self, sock=file_object, map=async_map) - self.header_contents = '' + self.header_contents = b"" self.packet_bytes_remaining = 0 self.reading_header = True self.ibuffer = b'' @@ -69,17 +69,21 @@ class UnpicklingForwardingReaderChannel(asyncore.dispatcher): if not data or (len(data) == 0): return None - for index in range(len(data)): - byte = data[index] - if byte != '#': - # Header byte. - self.header_contents += byte - else: - # End of header. - self.packet_bytes_remaining = int(self.header_contents) - self.header_contents = '' - self.reading_header = False - return data[(index+1):] + full_header_len = 4 + + assert(len(self.header_contents) < full_header_len) + + bytes_avail = len(data) + bytes_needed = full_header_len - len(self.header_contents) + header_bytes_avail = min(bytes_needed, bytes_avail) + self.header_contents += data[:header_bytes_avail] + if len(self.header_contents) == full_header_len: + import struct + # End of header. + self.packet_bytes_remaining = struct.unpack("!I", self.header_contents)[0] + self.header_contents = b"" + self.reading_header = False + return data[header_bytes_avail:] # If we made it here, we've exhausted the data and # we're still parsing header content. |