Index: /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp
===================================================================
--- /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp	(revision 58186)
+++ /trunk/src/VBox/Additions/common/VBoxGuestLib/VBoxGuestR3LibVideo.cpp	(revision 58187)
@@ -229,4 +229,5 @@
     VMMDevDisplayChangeRequestEx Req;
     int rc = VINF_SUCCESS;
+
     AssertPtrReturn(pcx, VERR_INVALID_PARAMETER);
     AssertPtrReturn(pcy, VERR_INVALID_PARAMETER);
@@ -237,4 +238,5 @@
     AssertPtrNullReturn(pfEnabled, VERR_INVALID_PARAMETER);
     AssertPtrNullReturn(pfChangeOrigin, VERR_INVALID_PARAMETER);
+
     RT_ZERO(Req);
     rc = vmmdevInitRequest(&Req.header, VMMDevReq_GetDisplayChangeRequestEx);
@@ -259,5 +261,7 @@
         if (pfChangeOrigin)
             *pfChangeOrigin = Req.fChangeOrigin;
-    }
+        return VINF_SUCCESS;
+    }
+
     /* NEEDS TESTING: test below with current Additions on VBox 4.1 or older. */
     /** @todo Can we find some standard grep-able string for "NEEDS TESTING"? */
@@ -313,20 +317,26 @@
     using namespace guestProp;
 
-    int rc, rc2 = VERR_UNRESOLVED_ERROR;
+    int rc;
     HGCMCLIENTID idClient = 0;
-    const char *pszPattern = VIDEO_PROP_PREFIX"*";
     PVBGLR3GUESTPROPENUM pHandle = NULL;
-    const char *pszName;
+    const char *pszName = NULL;
     unsigned cHighestScreen = 0;
 
+    /* Validate input. */
     AssertPtrReturn(pcScreen, VERR_INVALID_POINTER);
+
+    /* Query the data. */
     rc = VbglR3GuestPropConnect(&idClient);
     if (RT_SUCCESS(rc))
+    {
+        const char *pszPattern = VIDEO_PROP_PREFIX"*";
         rc = VbglR3GuestPropEnum(idClient, &pszPattern, 1, &pHandle, &pszName, NULL, NULL, NULL);
-    if (idClientId != 0)
-        rc2 = VbglR3GuestPropDisconnect(idClientId);
-    if (RT_SUCCESS(rc))
-        rc = rc2;
-    while (pszName != NULL && RT_SUCCESS(rc))
+        int rc2 = VbglR3GuestPropDisconnect(idClientId);
+        if (RT_FAILURE(rc2) && RT_SUCCESS(rc))
+            rc = rc2;
+    }
+
+    /* Process the data. */
+    while (RT_SUCCESS(rc) && pszName != NULL)
     {
         uint32_t cScreen;
@@ -337,5 +347,8 @@
         rc = VbglR3GuestPropEnumNext(pHandle, &pszName, NULL, NULL, NULL);
     }
+
     VbglR3GuestPropEnumFree(pHandle);
+
+    /* Return result. */
     if (RT_SUCCESS(rc))
         *pcScreen = cHighestScreen;
