diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-04-20 19:13:48 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-04-20 19:13:48 +0200 |
| commit | 5c1ce884dfec4fb361ea683ec818d6b4952bc841 (patch) | |
| tree | 6c77c9a86c7111178ec7e2ef61e1517fe4690612 /sam.c | |
| parent | 754b1cec7a39723b415ee76e797e587a7b5054dc (diff) | |
| download | vis-5c1ce884dfec4fb361ea683ec818d6b4952bc841.tar.gz vis-5c1ce884dfec4fb361ea683ec818d6b4952bc841.tar.xz | |
vis: handle termination from within win_open event gracefully
Diffstat (limited to 'sam.c')
| -rw-r--r-- | sam.c | 19 |
1 files changed, 10 insertions, 9 deletions
@@ -768,16 +768,17 @@ enum SamError sam_cmd(Vis *vis, const char *s) { Filerange range = text_range_empty(); sam_execute(vis, vis->win, cmd, NULL, &range); - bool completed = true; - for (Cursor *c = view_cursors(vis->win->view); c; c = view_cursors_next(c)) { - Filerange sel = view_cursors_selection_get(c); - if (text_range_valid(&sel)) { - completed = false; - break; + if (vis->win) { + bool completed = true; + for (Cursor *c = view_cursors(vis->win->view); c; c = view_cursors_next(c)) { + Filerange sel = view_cursors_selection_get(c); + if (text_range_valid(&sel)) { + completed = false; + break; + } } + vis_mode_switch(vis, completed ? VIS_MODE_NORMAL : VIS_MODE_VISUAL); } - - vis_mode_switch(vis, completed ? VIS_MODE_NORMAL : VIS_MODE_VISUAL); command_free(cmd); return err; } @@ -950,7 +951,7 @@ static bool cmd_select(Vis *vis, Win *win, Command *cmd, const char *argv[], Cur break; } - if (view == vis->win->view && primary != view_cursors_primary_get(view)) + if (vis->win && vis->win->view == view && primary != view_cursors_primary_get(view)) view_cursors_primary_set(view_cursors(view)); return ret; } |
