selection: fix crash when tripple clicking in a region containing NUL characters

If a cell contains a NUL character, it was incorrectly treated as a
quote, later triggering an assertion.

Patch by Johannes Altmanninger
This commit is contained in:
Daniel Eklöf 2024-12-22 07:09:37 +01:00
parent 3b0c2a3543
commit 67bd5dd460
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 5 additions and 4 deletions

View file

@ -86,6 +86,7 @@
* Crash when receiving an OSC-9 or OSC-777 with an empty notification
body ([#1866][1866]).
* Crash when tripple-clicking on region containing `NUL` characters.
[1866]: https://codeberg.org/dnkl/foot/issues/1866

View file

@ -533,8 +533,8 @@ selection_find_quote_left(struct terminal *term, struct coord *pos,
const struct row *row = grid_row_in_view(term->grid, pos->row);
char32_t wc = row->cells[pos->col].wc;
if ((*quote_char == '\0' && (wc == '"' || wc == '\'')) ||
wc == *quote_char)
if (*quote_char == '\0' ? (wc == '"' || wc == '\'')
: wc == *quote_char)
{
return false;
}
@ -555,8 +555,8 @@ selection_find_quote_left(struct terminal *term, struct coord *pos,
wc = row->cells[next_col].wc;
if ((*quote_char == '\0' && (wc == '"' || wc == '\'')) ||
wc == *quote_char)
if (*quote_char == '\0' ? (wc == '"' || wc == '\'')
: wc == *quote_char)
{
pos->row = next_row;
pos->col = next_col + 1;