diff --git a/src/client.c b/src/client.c
index 84274fb589635daa900887af3c900bb4602b4ec6..93de504ee39101e47aa600dd155354baf416a199 100644
--- a/src/client.c
+++ b/src/client.c
@@ -1318,13 +1318,6 @@ void clientFrame(Window w)
         return;
     }
 
-    MyXGrabServer (dpy);
-    if (XGetGeometry (dpy, w, &dummy_root, &dummy_x, &dummy_y, &dummy_width, &dummy_height, &dummy_bw, &dummy_depth) == 0)
-    {
-      free (c);
-      MyXUngrabServer (dpy);
-      return;   
-    }
     c->window = w;
     getWindowName(dpy, c->window, &c->name);
     DBG("name \"%s\"\n", c->name);
@@ -1395,6 +1388,21 @@ void clientFrame(Window w)
         clientGravitate(c, APPLY);
     }
 
+    MyXGrabServer (dpy);
+    if (XGetGeometry (dpy, w, &dummy_root, &dummy_x, &dummy_y, &dummy_width, &dummy_height, &dummy_bw, &dummy_depth) == 0)
+    {
+	if(c->name)
+	{
+            free(c->name);
+	}
+	if(c->size)
+	{
+            XFree(c->size);
+	}
+	free (c);
+	MyXUngrabServer (dpy);
+	return;   
+    }
     valuemask = CWEventMask;
     attributes.event_mask = (SubstructureNotifyMask | SubstructureRedirectMask | EnterWindowMask);
     c->frame = XCreateWindow (dpy, root, frameX(c), frameY(c), frameWidth(c), frameHeight(c), 0, CopyFromParent, InputOutput, CopyFromParent, valuemask, &attributes);