diff options
author | Lukas Fleischer <lfleischer@calcurse.org> | 2016-02-15 18:59:23 +0100 |
---|---|---|
committer | Lukas Fleischer <lfleischer@calcurse.org> | 2016-02-15 19:03:26 +0100 |
commit | feb059e8cff5fd1057faf88caa127623e35775d2 (patch) | |
tree | eb06367415191e072cd95506e47f321a3bf25c42 /src/io.c | |
parent | eaf8f96e065ef30fb78ead5cf1e4007aefd25fbf (diff) | |
download | calcurse-feb059e8cff5fd1057faf88caa127623e35775d2.zip |
Fix segmentation fault on reload with pre-load hook
We need to manually force a reinitialization of the todo item list box
before reloading the items. Otherwise, the list box contains dangling
references to the linked list of todo items which has already been
cleared at this point. After the pre-load hook is called, the windows
are redrawn by wins_unprepare_external() and these invalid references
are accessed, leading to a segmentation fault.
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src/io.c')
-rw-r--r-- | src/io.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -857,6 +857,14 @@ void io_reload_data(void) recur_event_llist_init(); todo_init_list(); + /* + * Temporarily reinitialize the todo list box without any items to make + * sure wins_unprepare_external() does not fail when it is called after + * executing the pre-load hook. + */ + ui_todo_load_items(); + ui_todo_sel_reset(); + io_load_data(NULL); io_unset_modified(); ui_todo_load_items(); |