From ac89e6570b4ca7f1739e9b72bd8959fae65a539e Mon Sep 17 00:00:00 2001 From: atf1206 Date: Sun, 9 Apr 2023 16:11:15 -0400 Subject: [PATCH] Correctly calculate string length based on encoded length --- qpython/qwriter.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/qpython/qwriter.py b/qpython/qwriter.py index b402a64..b0dd917 100644 --- a/qpython/qwriter.py +++ b/qpython/qwriter.py @@ -165,10 +165,12 @@ def _write_string(self, data): if not self._options.single_char_strings and len(data) == 1: self._write_atom(ord(data), QCHAR) else: - self._buffer.write(struct.pack('=bxi', QSTRING, len(data))) if isinstance(data, str): - self._buffer.write(data.encode(self._encoding)) + encoded_data = data.encode(self._encoding) + self._buffer.write(struct.pack('=bxi', QSTRING, len(encoded_data))) + self._buffer.write(encoded_data) else: + self._buffer.write(struct.pack('=bxi', QSTRING, len(data))) self._buffer.write(data)