diff --git a/src/client.c b/src/client.c
index 119e16f3f58403fe845adaac8fde916a95942c6c..cec9818b614f6feb8fdaf4759c79423273270da9 100644
--- a/src/client.c
+++ b/src/client.c
@@ -2019,7 +2019,6 @@ clientSetWorkspaceSingle (Client * c, int ws)
 
     TRACE ("entering clientSetWorkspaceSingle");
 
-    
     screen_info = c->screen_info;
     display_info = screen_info->display_info;
 
diff --git a/src/events.c b/src/events.c
index d158b5e9fae2339b172cfd8978bc330b59d6aa32..840157ccb4c33c78eb12297f3454d86a07422f9d 100644
--- a/src/events.c
+++ b/src/events.c
@@ -1947,8 +1947,8 @@ handleClientMessage (DisplayInfo *display_info, XClientMessageEvent * ev)
         if (((ev->message_type == display_info->atoms[WIN_WORKSPACE]) || 
              (ev->message_type == display_info->atoms[NET_CURRENT_DESKTOP])) && (ev->format == 32))
         {
-            TRACE ("root has received a win_workspace or a net_current_desktop event");
-            if (ev->data.l[0] != screen_info->current_ws)
+            TRACE ("root has received a win_workspace or a net_current_desktop event %i", ev->data.l[0]);
+            if ((ev->data.l[0] >= 0) && (ev->data.l[0] < screen_info->workspace_count) && (ev->data.l[0] != screen_info->current_ws))
             {
                 workspaceSwitch (screen_info, ev->data.l[0], NULL);
             }