diff --git a/kitty/data-types.h b/kitty/data-types.h index 787452ff8..654766b7b 100644 --- a/kitty/data-types.h +++ b/kitty/data-types.h @@ -9,6 +9,7 @@ #define PY_SSIZE_T_CLEAN #include +#include #include #include #include @@ -163,12 +164,14 @@ typedef struct { sprite_index sprite_x, sprite_y, sprite_z; CellAttrs attrs; } GPUCell; +static_assert(sizeof(GPUCell) == 20, "Fix the ordering of GPUCell"); typedef struct { char_type ch; - combining_type cc_idx[2]; hyperlink_id_type hyperlink_id; + combining_type cc_idx[3]; } CPUCell; +static_assert(sizeof(CPUCell) == 12, "Fix the ordering of CPUCell"); typedef enum { UNKNOWN_PROMPT_KIND = 0, PROMPT_START = 1, SECONDARY_PROMPT = 2, OUTPUT_START = 3 } PromptKind; typedef union LineAttrs { diff --git a/kitty_tests/datatypes.py b/kitty_tests/datatypes.py index d0128868f..fd3d022c8 100644 --- a/kitty_tests/datatypes.py +++ b/kitty_tests/datatypes.py @@ -182,9 +182,11 @@ class TestDataTypes(BaseTest): l0.add_combining_char(0, '\U000e0100') self.ae(l0[0], ' \u0300\U000e0100') l0.add_combining_char(0, '\u0302') - self.ae(l0[0], ' \u0300\u0302') + self.ae(l0[0], ' \u0300\U000e0100\u0302') + l0.add_combining_char(0, '\u0301') + self.ae(l0[0], ' \u0300\U000e0100\u0301') self.ae(l0[1], '\0') - self.ae(str(l0), ' \u0300\u0302') + self.ae(str(l0), ' \u0300\U000e0100\u0301') t = 'Testing with simple text' lb = LineBuf(2, len(t)) l0 = lb.line(0)