aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNir Bar <nir.bar@panel-sw.co.il>2021-08-10 10:13:28 -0500
committerSean Hall <r.sean.hall@gmail.com>2021-08-12 14:50:55 -0500
commitc6b138ed166e30c750e499919b858dc6913937b6 (patch)
tree2243e65425bf737fcc0e345abcbfb0fe921c802a
parent4d0798ec6311b48bfe6ee3cb4dd41379b4653528 (diff)
downloadwix-c6b138ed166e30c750e499919b858dc6913937b6.tar.gz
wix-c6b138ed166e30c750e499919b858dc6913937b6.tar.bz2
wix-c6b138ed166e30c750e499919b858dc6913937b6.zip
Make sure failure inside of a non-vital rollback boundary is ignored.
-rw-r--r--src/burn/engine/apply.cpp5
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 }