diff options
Diffstat (limited to 'src')
| -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; |
