Index: /trunk/src/VBox/Main/ProgressProxyImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/ProgressProxyImpl.cpp	(revision 29947)
+++ /trunk/src/VBox/Main/ProgressProxyImpl.cpp	(revision 29948)
@@ -176,5 +176,5 @@
         va_list va;
         va_start(va, aText);
-        HRESULT hrc = Progress::notifyCompleteV(aResultCode, aIID, aComponent, aText, va);
+        hrc = Progress::notifyCompleteV(aResultCode, aIID, aComponent, aText, va);
         va_end(va);
     }
@@ -321,5 +321,5 @@
         /* Detect if the other progress object was canceled. */
         BOOL fCanceled;
-        hrc = pOtherProgress->COMGETTER(Canceled)(&fCanceled); AssertComRC(hrc);
+        hrc = pOtherProgress->COMGETTER(Canceled)(&fCanceled);
         if (FAILED(hrc))
             fCanceled = FALSE;
@@ -335,5 +335,5 @@
             /* Has it completed? */
             BOOL fCompleted;
-            hrc = pOtherProgress->COMGETTER(Completed)(&fCompleted); AssertComRC(hrc);
+            hrc = pOtherProgress->COMGETTER(Completed)(&fCompleted);
             if (FAILED(hrc))
                 fCompleted = TRUE;
@@ -343,5 +343,5 @@
                 /* Check the result. */
                 LONG hrcResult;
-                hrc = pOtherProgress->COMGETTER(ResultCode)(&hrcResult); AssertComRC(hrc);
+                hrc = pOtherProgress->COMGETTER(ResultCode)(&hrcResult);
                 if (FAILED(hrc))
                     hrcResult = hrc;
@@ -356,15 +356,15 @@
                     {
                         Bstr bstrIID;
-                        hrc = ptrErrorInfo->COMGETTER(InterfaceID)(bstrIID.asOutParam());
+                        hrc = ptrErrorInfo->COMGETTER(InterfaceID)(bstrIID.asOutParam()); AssertComRC(hrc);
                         if (FAILED(hrc))
                             bstrIID.setNull();
 
                         Bstr bstrComponent;
-                        hrc = ptrErrorInfo->COMGETTER(Component)(bstrComponent.asOutParam());
+                        hrc = ptrErrorInfo->COMGETTER(Component)(bstrComponent.asOutParam()); AssertComRC(hrc);
                         if (FAILED(hrc))
                             bstrComponent = "failed";
 
                         Bstr bstrText;
-                        hrc = ptrErrorInfo->COMGETTER(Text)(bstrText.asOutParam());
+                        hrc = ptrErrorInfo->COMGETTER(Text)(bstrText.asOutParam()); AssertComRC(hrc);
                         if (FAILED(hrc))
                             bstrText = "<failed>";
@@ -377,5 +377,6 @@
                     {
                         LogFlowThisFunc(("ErrorInfo failed with hrc=%Rhrc; hrcResult=%Rhrc\n", hrc, hrcResult));
-                        Progress::notifyComplete((HRESULT)hrcResult);
+                        Progress::notifyComplete((HRESULT)hrcResult, COM_IIDOF(IProgress), Bstr("ProgressProxy"),
+                                                 tr("No error info"));
                     }
                 }
@@ -391,5 +392,5 @@
      * Did cancelable state change (point of no return)?
      */
-    if (mCancelable)
+    if (mCancelable && !mCompleted && !mCanceled)
     {
         BOOL fCancelable;
