diff --git a/CHANGELOG.md b/CHANGELOG.md index 93f80251..464f096f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -81,9 +81,11 @@ content ([#2353][2353]). * DECCRA not clamping or verifying the destination rectangle ([#2352][2352]). +* Empty selection clearing the clipboard ([#2327][2327]). [2353]: https://codeberg.org/dnkl/foot/issues/2353 [2352]: https://codeberg.org/dnkl/foot/issues/2352 +[2327]: https://codeberg.org/dnkl/foot/issues/2327 ### Security diff --git a/selection.c b/selection.c index 0a479ee8..bb0d3f1b 100644 --- a/selection.c +++ b/selection.c @@ -1948,6 +1948,9 @@ static const struct zwp_primary_selection_source_v1_listener primary_selection_s bool text_to_clipboard(struct seat *seat, struct terminal *term, char *text, uint32_t serial) { + if (text == NULL || text[0] == '\0') + return false; + xassert(serial != 0); struct wl_clipboard *clipboard = &seat->clipboard; @@ -2418,6 +2421,9 @@ selection_from_clipboard(struct seat *seat, struct terminal *term, uint32_t seri bool text_to_primary(struct seat *seat, struct terminal *term, char *text, uint32_t serial) { + if (text == NULL || text[0] == '\0') + return false; + if (term->wl->primary_selection_device_manager == NULL) return false;