diff options
Diffstat (limited to 'src/burn/engine/apply.cpp')
-rw-r--r-- | src/burn/engine/apply.cpp | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index e67208b4..8fbaa76e 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp | |||
@@ -2547,6 +2547,11 @@ static HRESULT DoExecuteAction( | |||
2547 | } while (fRetry && *pRestart < BOOTSTRAPPER_APPLY_RESTART_INITIATED); | 2547 | } while (fRetry && *pRestart < BOOTSTRAPPER_APPLY_RESTART_INITIATED); |
2548 | 2548 | ||
2549 | LExit: | 2549 | LExit: |
2550 | if (*pRestart < restart) | ||
2551 | { | ||
2552 | *pRestart = restart; | ||
2553 | } | ||
2554 | |||
2550 | return hr; | 2555 | return hr; |
2551 | } | 2556 | } |
2552 | 2557 | ||
@@ -2561,6 +2566,7 @@ static HRESULT DoRollbackActions( | |||
2561 | DWORD iCheckpoint = 0; | 2566 | DWORD iCheckpoint = 0; |
2562 | BOOL fRetryIgnored = FALSE; | 2567 | BOOL fRetryIgnored = FALSE; |
2563 | BOOL fSuspendIgnored = FALSE; | 2568 | BOOL fSuspendIgnored = FALSE; |
2569 | BOOTSTRAPPER_APPLY_RESTART restart = BOOTSTRAPPER_APPLY_RESTART_NONE; | ||
2564 | 2570 | ||
2565 | pContext->fRollback = TRUE; | 2571 | pContext->fRollback = TRUE; |
2566 | 2572 | ||
@@ -2598,7 +2604,8 @@ static HRESULT DoRollbackActions( | |||
2598 | continue; | 2604 | continue; |
2599 | } | 2605 | } |
2600 | 2606 | ||
2601 | BOOTSTRAPPER_APPLY_RESTART restart = BOOTSTRAPPER_APPLY_RESTART_NONE; | 2607 | restart = BOOTSTRAPPER_APPLY_RESTART_NONE; |
2608 | |||
2602 | switch (pRollbackAction->type) | 2609 | switch (pRollbackAction->type) |
2603 | { | 2610 | { |
2604 | case BURN_EXECUTE_ACTION_TYPE_CHECKPOINT: | 2611 | case BURN_EXECUTE_ACTION_TYPE_CHECKPOINT: |
@@ -2674,6 +2681,11 @@ static HRESULT DoRollbackActions( | |||
2674 | } | 2681 | } |
2675 | 2682 | ||
2676 | LExit: | 2683 | LExit: |
2684 | if (*pRestart < restart) | ||
2685 | { | ||
2686 | *pRestart = restart; | ||
2687 | } | ||
2688 | |||
2677 | return hr; | 2689 | return hr; |
2678 | } | 2690 | } |
2679 | 2691 | ||
@@ -2791,6 +2803,7 @@ static HRESULT DoRestoreRelatedBundleActions( | |||
2791 | HRESULT hr = S_OK; | 2803 | HRESULT hr = S_OK; |
2792 | BOOL fRetryIgnored = FALSE; | 2804 | BOOL fRetryIgnored = FALSE; |
2793 | BOOL fSuspendIgnored = FALSE; | 2805 | BOOL fSuspendIgnored = FALSE; |
2806 | BOOTSTRAPPER_APPLY_RESTART restart = BOOTSTRAPPER_APPLY_RESTART_NONE; | ||
2794 | 2807 | ||
2795 | // execute restore related bundle actions | 2808 | // execute restore related bundle actions |
2796 | for (DWORD i = 0; i < pEngineState->plan.cRestoreRelatedBundleActions; ++i) | 2809 | for (DWORD i = 0; i < pEngineState->plan.cRestoreRelatedBundleActions; ++i) |
@@ -2804,7 +2817,8 @@ static HRESULT DoRestoreRelatedBundleActions( | |||
2804 | pContext->wzExecutingPackageId = NULL; | 2817 | pContext->wzExecutingPackageId = NULL; |
2805 | pContext->fAbandonedProcess = FALSE; | 2818 | pContext->fAbandonedProcess = FALSE; |
2806 | 2819 | ||
2807 | BOOTSTRAPPER_APPLY_RESTART restart = BOOTSTRAPPER_APPLY_RESTART_NONE; | 2820 | restart = BOOTSTRAPPER_APPLY_RESTART_NONE; |
2821 | |||
2808 | switch (pRestoreRelatedBundleAction->type) | 2822 | switch (pRestoreRelatedBundleAction->type) |
2809 | { | 2823 | { |
2810 | case BURN_EXECUTE_ACTION_TYPE_RELATED_BUNDLE: | 2824 | case BURN_EXECUTE_ACTION_TYPE_RELATED_BUNDLE: |
@@ -2824,6 +2838,11 @@ static HRESULT DoRestoreRelatedBundleActions( | |||
2824 | } | 2838 | } |
2825 | 2839 | ||
2826 | LExit: | 2840 | LExit: |
2841 | if (*pRestart < restart) | ||
2842 | { | ||
2843 | *pRestart = restart; | ||
2844 | } | ||
2845 | |||
2827 | return hr; | 2846 | return hr; |
2828 | } | 2847 | } |
2829 | 2848 | ||