Bugfix: Don’t crash when changing workspace when there is more than one column

This commit is contained in:
Michael Stapelberg 2009-09-29 12:21:07 +02:00
parent ff0e9bb954
commit 9ec6ea61de
1 changed files with 18 additions and 16 deletions

View File

@ -44,13 +44,14 @@ Workspace *workspace_get(int number) {
*
* To distinguish between the first workspace and a NULL
* pointer, we store <workspace number> + 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)
@ -76,13 +77,14 @@ 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)