diff options
author | Thomas Adam <thomas@xteddy.org> | 2012-10-11 17:52:23 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2012-10-11 17:52:23 +0100 |
commit | b4ad1759b8a35df6304ac94729314085dcc03d5e (patch) | |
tree | a2bf22c8ec00f2ac132a39b7a7af0da6f9e26234 | |
parent | 0cdcae35329dcf178d41cb036a914954b9ca7e01 (diff) | |
parent | 6589120667587f2d5c6f59f9faf4bda584a9f602 (diff) |
Merge branch 'obsd-master'
Sync from OpenBSD.
-rw-r--r-- | window-choose.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/window-choose.c b/window-choose.c index 678e6614..86980a4f 100644 --- a/window-choose.c +++ b/window-choose.c @@ -181,8 +181,8 @@ window_choose_free(struct window_pane *wp) struct window_choose_mode_item *item; u_int i; - for (i = 0; i < ARRAY_LENGTH(&data->list); i++) { - item = &ARRAY_ITEM(&data->list, i); + for (i = 0; i < ARRAY_LENGTH(&data->old_list); i++) { + item = &ARRAY_ITEM(&data->old_list, i); if (data->freefn != NULL && item->wcd != NULL) data->freefn(item->wcd); free(item->name); @@ -289,6 +289,7 @@ window_choose_collapse(struct window_pane *wp, struct session *s) if (!ARRAY_EMPTY(&list_copy)) { ARRAY_FREE(&data->list); ARRAY_CONCAT(&data->list, &list_copy); + ARRAY_FREE(&list_copy); } } @@ -296,11 +297,11 @@ void window_choose_collapse_all(struct window_pane *wp) { struct window_choose_mode_data *data = wp->modedata; - struct window_choose_mode_item *item, *chosen; - struct session *s; + struct window_choose_mode_item *item; + struct session *s, *chosen; u_int i; - chosen = &ARRAY_ITEM(&data->list, data->selected); + chosen = ARRAY_ITEM(&data->list, data->selected).wcd->session; RB_FOREACH(s, sessions, &sessions) window_choose_collapse(wp, s); @@ -309,7 +310,7 @@ window_choose_collapse_all(struct window_pane *wp) for (i = 0; i < ARRAY_LENGTH(&data->list); i++) { item = &ARRAY_ITEM(&data->list, i); - if (chosen->wcd->session != item->wcd->tree_session) + if (chosen != item->wcd->tree_session) continue; if (item->wcd->type & TREE_SESSION) |