selection: calculate required length for clipboard text

This commit is contained in:
Daniel Eklöf 2019-07-11 16:32:33 +02:00
parent c1c6646b98
commit 6edc3845bd
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -34,8 +34,17 @@ extract_selection(const struct terminal *term)
assert(start->row <= end->row);
/* TODO: calculate length required */
char buf[4096];
size_t max_cells = 0;
if (start->row == end->row) {
assert(start->col <= end->col);
max_cells = end->col - start->col + 1;
} else {
max_cells = term->cols - start->col;
max_cells += term->cols * (end->row - start->row - 1);
max_cells += end->col + 1;
}
char *buf = malloc(max_cells * 4 + 1);
int idx = 0;
int start_col = start->col;
@ -75,7 +84,7 @@ extract_selection(const struct terminal *term)
}
buf[idx] = '\0';
return strdup(buf);
return buf;
}
void