From 1055d32e9f6de10053783d5362ae5bfcbaf996fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Ekl=C3=B6f?= Date: Fri, 29 Aug 2025 13:21:42 +0200 Subject: [PATCH] term_remove_all_multi_cursors(): early return if no extra cursors are active --- csi.c | 6 ++---- terminal.c | 7 +++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/csi.c b/csi.c index b247e8ff..4c40722e 100644 --- a/csi.c +++ b/csi.c @@ -988,15 +988,13 @@ csi_dispatch(struct terminal *term, uint8_t final) /* Erase entire screen */ term_erase(term, 0, 0, term->rows - 1, term->cols - 1); term->grid->cursor.lcf = false; - if (unlikely(term->multi_cursor.shapes != NULL)) - term_remove_all_multi_cursors(term); + term_remove_all_multi_cursors(term); break; case 3: { /* Erase scrollback */ term_erase_scrollback(term); - if (unlikely(term->multi_cursor.shapes != NULL)) - term_remove_all_multi_cursors(term); + term_remove_all_multi_cursors(term); break; } diff --git a/terminal.c b/terminal.c index abb7a82d..f0e46285 100644 --- a/terminal.c +++ b/terminal.c @@ -2117,6 +2117,13 @@ term_theme_apply(struct terminal *term, const struct color_theme *theme) void term_remove_all_multi_cursors(struct terminal *term) { + if (term->multi_cursor.shapes == NULL) { +#if defined(_DEBUG) + xassert(pixman_region32_empty(&term->multi_cursor.active)); +#endif + return; + } + pixman_region32_fini(&term->multi_cursor.active); pixman_region32_init(&term->multi_cursor.active); free(term->multi_cursor.shapes);