mirror of
https://github.com/rkd77/elinks.git
synced 2024-12-04 14:46:47 -05:00
Export done_textarea_data and call in destroy_terminal to prevent leak
Previously, if a terminal crashed with an external editor open, the struct textarea_data would never be freed
This commit is contained in:
parent
8dc000e313
commit
6469344727
@ -119,6 +119,11 @@ destroy_terminal(struct terminal *term)
|
|||||||
bookmark_auto_save_tabs(term);
|
bookmark_auto_save_tabs(term);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
if (term->textarea_data) {
|
||||||
|
done_textarea_data(term->textarea_data);
|
||||||
|
term->textarea_data = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* delete_window doesn't update term->current_tab, but it
|
/* delete_window doesn't update term->current_tab, but it
|
||||||
calls redraw_terminal, which requires term->current_tab
|
calls redraw_terminal, which requires term->current_tab
|
||||||
to be valid if there are any tabs left. So set a value
|
to be valid if there are any tabs left. So set a value
|
||||||
|
@ -599,7 +599,7 @@ init_textarea_data(struct terminal *term, struct form_state *fs,
|
|||||||
return td;
|
return td;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
void
|
||||||
done_textarea_data(struct textarea_data *td)
|
done_textarea_data(struct textarea_data *td)
|
||||||
{
|
{
|
||||||
mem_free(td->fn);
|
mem_free(td->fn);
|
||||||
|
@ -21,6 +21,7 @@ int area_cursor(struct form_control *fc, struct form_state *fs);
|
|||||||
void draw_textarea(struct terminal *term, struct form_state *fs, struct document_view *doc_view, struct link *link);
|
void draw_textarea(struct terminal *term, struct form_state *fs, struct document_view *doc_view, struct link *link);
|
||||||
unsigned char *encode_textarea(struct submitted_value *sv);
|
unsigned char *encode_textarea(struct submitted_value *sv);
|
||||||
|
|
||||||
|
void done_textarea_data(struct textarea_data *td);
|
||||||
void textarea_edit(int, struct terminal *, struct form_state *, struct document_view *, struct link *);
|
void textarea_edit(int, struct terminal *, struct form_state *, struct document_view *, struct link *);
|
||||||
void menu_textarea_edit(struct terminal *term, void *xxx, void *ses_);
|
void menu_textarea_edit(struct terminal *term, void *xxx, void *ses_);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user