aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/burn/engine/registration.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/burn/engine/registration.cpp b/src/burn/engine/registration.cpp
index 35100336..0117a993 100644
--- a/src/burn/engine/registration.cpp
+++ b/src/burn/engine/registration.cpp
@@ -1613,12 +1613,14 @@ LExit:
1613static BOOL IsWuRebootPending() 1613static BOOL IsWuRebootPending()
1614{ 1614{
1615 HRESULT hr = S_OK; 1615 HRESULT hr = S_OK;
1616 BOOL fUninitializeCom = FALSE;
1616 BOOL fRebootPending = FALSE; 1617 BOOL fRebootPending = FALSE;
1617 1618
1618 // Do a best effort to ask WU if a reboot is required. If anything goes 1619 // Do a best effort to ask WU if a reboot is required. If anything goes
1619 // wrong then let's pretend a reboot is not required. 1620 // wrong then let's pretend a reboot is not required.
1620 hr = ::CoInitialize(NULL); 1621 hr = ::CoInitialize(NULL);
1621 if (SUCCEEDED(hr) || RPC_E_CHANGED_MODE == hr) 1622 fUninitializeCom = SUCCEEDED(hr);
1623 if (fUninitializeCom || RPC_E_CHANGED_MODE == hr)
1622 { 1624 {
1623 hr = WuaRestartRequired(&fRebootPending); 1625 hr = WuaRestartRequired(&fRebootPending);
1624 if (FAILED(hr)) 1626 if (FAILED(hr))
@@ -1626,7 +1628,10 @@ static BOOL IsWuRebootPending()
1626 fRebootPending = FALSE; 1628 fRebootPending = FALSE;
1627 } 1629 }
1628 1630
1629 ::CoUninitialize(); 1631 if (fUninitializeCom)
1632 {
1633 ::CoUninitialize();
1634 }
1630 } 1635 }
1631 1636
1632 return fRebootPending; 1637 return fRebootPending;