extract: ensure line-based selections are terminated with a newline

Closes #869
This commit is contained in:
Daniel Eklöf 2022-02-02 22:02:56 +01:00
parent 5ee902551a
commit 69e2bff8c8
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F
2 changed files with 20 additions and 3 deletions

View file

@ -86,9 +86,24 @@ extract_finish_wide(struct extraction_context *ctx, wchar_t **text, size_t *len)
} else {
xassert(ctx->idx > 0);
xassert(ctx->idx <= ctx->size);
if (ctx->buf[ctx->idx - 1] == L'\n')
ctx->buf[ctx->idx - 1] = L'\0';
else {
switch (ctx->selection_kind) {
default:
if (ctx->buf[ctx->idx - 1] == L'\n')
ctx->buf[ctx->idx - 1] = L'\0';
break;
case SELECTION_LINE_WISE:
if (ctx->buf[ctx->idx - 1] != L'\n') {
if (!ensure_size(ctx, 1))
goto err;
ctx->buf[ctx->idx++] = L'\n';
}
break;
}
if (ctx->buf[ctx->idx - 1] != L'\0') {
if (!ensure_size(ctx, 1))
goto err;
ctx->buf[ctx->idx++] = L'\0';