workspaces: don't segfault on invalid move_surface_to_workspace request

Also fixes the off-by-one in toytoolkit that exposed the issue.
This commit is contained in:
Philipp Brüschweiler
2012-09-01 16:03:05 +02:00
committed by Kristian Høgsberg
parent 8538b22ff4
commit 067abf67cd
2 changed files with 5 additions and 1 deletions
+4
View File
@@ -548,6 +548,7 @@ static struct workspace *
get_workspace(struct desktop_shell *shell, unsigned int index)
{
struct workspace **pws = shell->workspaces.array.data;
assert(index < shell->workspaces.num);
pws += index;
return *pws;
}
@@ -849,6 +850,9 @@ move_surface_to_workspace(struct desktop_shell *shell,
if (workspace == shell->workspaces.current)
return;
if (workspace >= shell->workspaces.num)
workspace = shell->workspaces.num - 1;
from = get_current_workspace(shell);
to = get_workspace(shell, workspace);