diff options
| author | Nir Bar <nir.bar@panel-sw.co.il> | 2021-08-10 10:13:28 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-08-12 14:50:55 -0500 |
| commit | c6b138ed166e30c750e499919b858dc6913937b6 (patch) | |
| tree | 2243e65425bf737fcc0e345abcbfb0fe921c802a /src | |
| parent | 4d0798ec6311b48bfe6ee3cb4dd41379b4653528 (diff) | |
| download | wix-c6b138ed166e30c750e499919b858dc6913937b6.tar.gz wix-c6b138ed166e30c750e499919b858dc6913937b6.tar.bz2 wix-c6b138ed166e30c750e499919b858dc6913937b6.zip | |
Make sure failure inside of a non-vital rollback boundary is ignored.
Diffstat (limited to 'src')
| -rw-r--r-- | src/burn/engine/apply.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index 8711344d..283c0ada 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp | |||
| @@ -725,6 +725,7 @@ extern "C" HRESULT ApplyExecute( | |||
| 725 | break; | 725 | break; |
| 726 | } | 726 | } |
| 727 | 727 | ||
| 728 | // The action failed, roll back to previous rollback boundary. | ||
| 728 | if (pCheckpoint) | 729 | if (pCheckpoint) |
| 729 | { | 730 | { |
| 730 | // If inside a MSI transaction, roll it back. | 731 | // If inside a MSI transaction, roll it back. |
| @@ -734,7 +735,6 @@ extern "C" HRESULT ApplyExecute( | |||
| 734 | IgnoreRollbackError(hrRollback, "Failed rolling back transaction"); | 735 | IgnoreRollbackError(hrRollback, "Failed rolling back transaction"); |
| 735 | } | 736 | } |
| 736 | 737 | ||
| 737 | // The action failed, roll back to previous rollback boundary. | ||
| 738 | hrRollback = DoRollbackActions(pEngineState, &context, pCheckpoint->dwId, pRestart); | 738 | hrRollback = DoRollbackActions(pEngineState, &context, pCheckpoint->dwId, pRestart); |
| 739 | IgnoreRollbackError(hrRollback, "Failed rollback actions"); | 739 | IgnoreRollbackError(hrRollback, "Failed rollback actions"); |
| 740 | } | 740 | } |
| @@ -745,6 +745,9 @@ extern "C" HRESULT ApplyExecute( | |||
| 745 | break; | 745 | break; |
| 746 | } | 746 | } |
| 747 | 747 | ||
| 748 | // Ignore failure inside of a non-vital rollback boundary. | ||
| 749 | hr = S_OK; | ||
| 750 | |||
| 748 | // Move forward to next rollback boundary. | 751 | // Move forward to next rollback boundary. |
| 749 | fSeekNextRollbackBoundary = TRUE; | 752 | fSeekNextRollbackBoundary = TRUE; |
| 750 | } | 753 | } |
