diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/api/extmark.c | 3 | ||||
-rw-r--r-- | src/nvim/decoration.c | 17 |
2 files changed, 12 insertions, 8 deletions
diff --git a/src/nvim/api/extmark.c b/src/nvim/api/extmark.c index 845a4c7dbe..9e03cc8676 100644 --- a/src/nvim/api/extmark.c +++ b/src/nvim/api/extmark.c @@ -809,8 +809,7 @@ Integer nvim_buf_set_extmark(Buffer buffer, Integer ns_id, Integer line, Integer return (Integer)id; error: - clear_virttext(&decor.virt_text); - xfree(decor.sign_text); + decor_clear(&decor); return 0; } diff --git a/src/nvim/decoration.c b/src/nvim/decoration.c index c98ffbeefb..7e47565247 100644 --- a/src/nvim/decoration.c +++ b/src/nvim/decoration.c @@ -112,15 +112,20 @@ void decor_remove(buf_T *buf, int row, int row2, Decoration *decor) decor_free(decor); } +void decor_clear(Decoration *decor) +{ + clear_virttext(&decor->virt_text); + for (size_t i = 0; i < kv_size(decor->virt_lines); i++) { + clear_virttext(&kv_A(decor->virt_lines, i).line); + } + kv_destroy(decor->virt_lines); + xfree(decor->sign_text); +} + void decor_free(Decoration *decor) { if (decor) { - clear_virttext(&decor->virt_text); - for (size_t i = 0; i < kv_size(decor->virt_lines); i++) { - clear_virttext(&kv_A(decor->virt_lines, i).line); - } - kv_destroy(decor->virt_lines); - xfree(decor->sign_text); + decor_clear(decor); xfree(decor); } } |