From e978525053089f87421b93c193af0df79b9c0fa1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Ma=C5=9Blanka?= <piotr.maslanka@henrietta.com.pl> Date: Fri, 13 Aug 2021 19:19:02 +0200 Subject: [PATCH] v2.11 major bugfix --- minijson.pyx | 5 +++-- tests/test_minijson.py | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/minijson.pyx b/minijson.pyx index b6f5aa6..bc80cdb 100644 --- a/minijson.pyx +++ b/minijson.pyx @@ -517,8 +517,9 @@ cdef class MiniJSONEncoder: data.sort() # sort implicitly will sort it by first value, which is the key for field_name, elem in data: - cio.write(bytearray([len(field_name)])) - cio.write(field_name.encode('utf-8')) + b_data = field_name.encode('utf-8') + cio.write(bytearray([len(b_data)])) + cio.write(b_data) length += self.dump(elem, cio) return length else: diff --git a/tests/test_minijson.py b/tests/test_minijson.py index de288d6..526b7e2 100644 --- a/tests/test_minijson.py +++ b/tests/test_minijson.py @@ -137,6 +137,9 @@ class TestMiniJSON(unittest.TestCase): self.assertSameAfterDumpsAndLoads({i: i for i in range(300)}) self.assertSameAfterDumpsAndLoads({i: i for i in range(66000)}) + def test_smok_bug_case_2(self): + self.assertSameAfterDumpsAndLoads({"zaşóĹÄ gÄĹlÄ jaĹşĹ": "zaşóĹÄ gÄĹlÄ jaĹşĹ"}) + def test_invalid_name_dict(self): self.assertLoadingIsDecodingError(b'\x15\x01\x81\x01') self.assertLoadingIsDecodingError(b'\x0B\x01\x01\xFF\x15') -- GitLab