diff --git a/kitty_tests/glfw.py b/kitty_tests/glfw.py index 25ecb5fe3..0c531f8ee 100644 --- a/kitty_tests/glfw.py +++ b/kitty_tests/glfw.py @@ -19,8 +19,14 @@ class TestGLFW(BaseTest): backend_utils = glfw_path('x11') lib = ctypes.CDLL(backend_utils) + libc = ctypes.CDLL(None) + + class allocated_c_char_p(ctypes.c_char_p): + def __del__(self): + libc.free(self) + utf_8_strndup = lib.utf_8_strndup - utf_8_strndup.restype = ctypes.c_char_p + utf_8_strndup.restype = allocated_c_char_p utf_8_strndup.argtypes = (ctypes.c_char_p, ctypes.c_size_t) def test(string): @@ -32,14 +38,14 @@ class TestGLFW(BaseTest): part_bytes = bytes(part, 'utf-8') length_bytes = len(part_bytes) for length_bytes_2 in range(prev_length_bytes + 1, length_bytes): - self.ae(utf_8_strndup(string_bytes, length_bytes_2), prev_part_bytes) - self.ae(utf_8_strndup(string_bytes, length_bytes), part_bytes) + self.ae(utf_8_strndup(string_bytes, length_bytes_2).value, prev_part_bytes) + self.ae(utf_8_strndup(string_bytes, length_bytes).value, part_bytes) prev_part_bytes = part_bytes prev_length_bytes = length_bytes - self.ae(utf_8_strndup(string_bytes, len(string_bytes) + 1), string_bytes) # Try to go one character after the end of the string + self.ae(utf_8_strndup(string_bytes, len(string_bytes) + 1).value, string_bytes) # Try to go one character after the end of the string - self.ae(utf_8_strndup(None, 2), None) - self.ae(utf_8_strndup(b'', 2), b'') + self.ae(utf_8_strndup(None, 2).value, None) + self.ae(utf_8_strndup(b'', 2).value, b'') test('รถ') test('>a<')