diff options
-rw-r--r-- | src/burn/engine/registration.cpp | 9 |
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: | |||
1613 | static BOOL IsWuRebootPending() | 1613 | static 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; |