Index: /trunk/src/VBox/Main/hgcm/HGCM.cpp
===================================================================
--- /trunk/src/VBox/Main/hgcm/HGCM.cpp	(revision 22813)
+++ /trunk/src/VBox/Main/hgcm/HGCM.cpp	(revision 22814)
@@ -1038,5 +1038,5 @@
 {
     ASMAtomicIncU32 (&m_u32RefCnt);
-    LogFlowFunc(("m_u32RefCnt = %d\n", m_u32RefCnt));
+    LogFlowFunc(("[%s] m_u32RefCnt = %d\n", m_pszSvcName, m_u32RefCnt));
 }
 
@@ -1361,6 +1361,6 @@
         else
         {
-            LogRel(("[%s] hgcmMsgAlloc(%p, SVC_MSG_DISCONNECT) failed %Rrc\n",
-                    RT_VALID_PTR(m_pszSvcName)? m_pszSvcName: "", m_thread, rc));
+            LogRel(("(%d, %d) [%s] hgcmMsgAlloc(%p, SVC_MSG_DISCONNECT) failed %Rrc\n",
+                    u32ClientId, fFromService, RT_VALID_PTR(m_pszSvcName)? m_pszSvcName: "", m_thread, rc));
         }
     }
@@ -1377,16 +1377,16 @@
             if (m_cClients > i)
             {
-                memmove (&m_paClientIds[i], &m_paClientIds[i + 1], m_cClients - i);
+                memmove (&m_paClientIds[i], &m_paClientIds[i + 1], sizeof (m_paClientIds[0]) * (m_cClients - i));
             }
 
+            /* Delete the client handle. */
+            hgcmObjDeleteHandle (u32ClientId);
+
+            /* The service must be released. */
+            ReleaseService ();
+
             break;
         }
     }
-
-    /* Delete the client handle. */
-    hgcmObjDeleteHandle (u32ClientId);
-
-    /* The service must be released. */
-    ReleaseService ();
 
     LogFlowFunc(("rc = %Rrc\n", rc));
