Fix for shared memory leakage.
diff --git a/vncviewer/X11PixelBuffer.cxx b/vncviewer/X11PixelBuffer.cxx
index 4f52cad..e23f777 100644
--- a/vncviewer/X11PixelBuffer.cxx
+++ b/vncviewer/X11PixelBuffer.cxx
@@ -187,8 +187,9 @@
     goto free_xim;
 
   shminfo->shmaddr = xim->data = (char*)shmat(shminfo->shmid, 0, 0);
+  shmctl(shminfo->shmid, IPC_RMID, 0); // to avoid memory leakage
   if (shminfo->shmaddr == (char *)-1)
-    goto free_shm;
+    goto free_xim;
 
   shminfo->readOnly = True;
 
@@ -216,9 +217,6 @@
 free_shmaddr:
   shmdt(shminfo->shmaddr);
 
-free_shm:
-  shmctl(shminfo->shmid, IPC_RMID, 0);
-
 free_xim:
   XDestroyImage(xim);
   xim = NULL;