summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--config.c1
-rw-r--r--lsp.c18
-rw-r--r--main.c1
3 files changed, 13 insertions, 7 deletions
diff --git a/config.c b/config.c
index 92f3580..284773f 100644
--- a/config.c
+++ b/config.c
@@ -1538,6 +1538,7 @@ void config_read(Ted *ted, const char *path, ConfigFormat format) {
break;
case CONFIG_TED_CFG:
config_read_ted_cfg(ted, source_rc, &include_stack);
+ arr_free(include_stack);
// force recompute default settings
strcpy(ted->default_settings_cwd, "//");
break;
diff --git a/lsp.c b/lsp.c
index bd13366..32ccf29 100644
--- a/lsp.c
+++ b/lsp.c
@@ -153,6 +153,15 @@ void lsp_request_free(LSPRequest *r) {
memset(r, 0, sizeof *r);
}
+static void lsp_workspace_edit_free(LSPWorkspaceEdit *edit) {
+ arr_foreach_ptr(edit->changes, LSPWorkspaceChange, c) {
+ if (c->type == LSP_CHANGE_EDITS) {
+ arr_free(c->data.edit.edits);
+ }
+ }
+ arr_free(edit->changes);
+}
+
void lsp_response_free(LSPResponse *r) {
lsp_message_base_free(&r->base);
switch (r->request.type) {
@@ -170,12 +179,7 @@ void lsp_response_free(LSPResponse *r) {
break;
case LSP_REQUEST_RENAME: {
LSPResponseRename *rename = &r->data.rename;
- arr_foreach_ptr(rename->changes, LSPWorkspaceChange, c) {
- if (c->type == LSP_CHANGE_EDITS) {
- arr_free(c->data.edit.edits);
- }
- }
- arr_free(r->data.rename.changes);
+ lsp_workspace_edit_free(rename);
} break;
case LSP_REQUEST_HIGHLIGHT:
arr_free(r->data.highlight.highlights);
@@ -192,7 +196,7 @@ void lsp_response_free(LSPResponse *r) {
case LSP_REQUEST_CODE_ACTION: {
LSPResponseCodeAction *c = &r->data.code_action;
arr_foreach_ptr(c->actions, LSPCodeAction, action) {
- arr_free(action->edit.changes);
+ lsp_workspace_edit_free(&action->edit);
}
arr_free(c->actions);
} break;
diff --git a/main.c b/main.c
index 6d419a9..25cfca0 100644
--- a/main.c
+++ b/main.c
@@ -1302,6 +1302,7 @@ int main(int argc, char **argv) {
signature_help_quit(ted);
autocomplete_quit(ted);
format_quit(ted);
+ code_action_quit(ted);
highlights_quit(ted);
usages_quit(ted);
session_write(ted);