From: Michael Stapelberg Date: Tue, 29 Sep 2009 10:21:07 +0000 (+0200) Subject: Bugfix: Don’t crash when changing workspace when there is more than one column X-Git-Tag: 3.d~60 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9ec6ea61dee6c8015054dcf1db721a668850998a;p=i3%2Fi3 Bugfix: Don’t crash when changing workspace when there is more than one column --- diff --git a/src/workspace.c b/src/workspace.c index 4663dfae..36f807d2 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -44,21 +44,22 @@ Workspace *workspace_get(int number) { * * To distinguish between the first workspace and a NULL * pointer, we store + 1. */ - for (int c = 0; c < num_workspaces; c++) + for (int c = 0; c < num_workspaces; c++) { FOR_TABLE(&(workspaces[c])) { Container *con = workspaces[c].table[cols][rows]; if (con->workspace != NULL) { LOG("Handling con %p with pointer %p (num %d)\n", con, con->workspace, con->workspace->num); con->workspace = (Workspace*)(con->workspace->num + 1); } - Client *current; - SLIST_FOREACH(current, &(workspaces[c].focus_stack), focus_clients) { - if (current->workspace == NULL) - continue; - LOG("Handling client %p with pointer %p (num %d)\n", current, current->workspace, current->workspace->num); - current->workspace = (Workspace*)(current->workspace->num + 1); - } } + Client *current; + SLIST_FOREACH(current, &(workspaces[c].focus_stack), focus_clients) { + if (current->workspace == NULL) + continue; + LOG("Handling client %p with pointer %p (num %d)\n", current, current->workspace, current->workspace->num); + current->workspace = (Workspace*)(current->workspace->num + 1); + } + } /* preserve c_ws */ c_ws = (Workspace*)(c_ws->num); @@ -76,21 +77,22 @@ Workspace *workspace_get(int number) { * by default, thus requiring re-rendering the layout. */ c_ws = workspace_get((int)c_ws); - for (int c = 0; c < old_num_workspaces; c++) + for (int c = 0; c < old_num_workspaces; c++) { FOR_TABLE(&(workspaces[c])) { Container *con = workspaces[c].table[cols][rows]; if (con->workspace != NULL) { LOG("Handling con %p with (num %d)\n", con, con->workspace); con->workspace = workspace_get((int)con->workspace - 1); } - Client *current; - SLIST_FOREACH(current, &(workspaces[c].focus_stack), focus_clients) { - if (current->workspace == NULL) - continue; - LOG("Handling client %p with (num %d)\n", current, current->workspace); - current->workspace = workspace_get((int)current->workspace - 1); - } } + Client *current; + SLIST_FOREACH(current, &(workspaces[c].focus_stack), focus_clients) { + if (current->workspace == NULL) + continue; + LOG("Handling client %p with (num %d)\n", current, current->workspace); + current->workspace = workspace_get((int)current->workspace - 1); + } + } /* Initialize the new workspaces */ for (int c = old_num_workspaces; c < num_workspaces; c++) {