From 8ed8ca0721e08ea953f4751086c4845c98551c46 Mon Sep 17 00:00:00 2001 From: Sean Hall <r.sean.hall@gmail.com> Date: Mon, 14 Mar 2022 15:20:28 -0500 Subject: Don't close handles from MsiBeginTransaction. Assume that MsiEndTransaction must be called exactly once for each MsiBeginTransaction. Fixes 6695 --- src/burn/engine/apply.cpp | 8 +++----- src/burn/engine/msiengine.cpp | 3 +-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/burn/engine/apply.cpp b/src/burn/engine/apply.cpp index 4e652768..3ad22e9b 100644 --- a/src/burn/engine/apply.cpp +++ b/src/burn/engine/apply.cpp @@ -3123,12 +3123,10 @@ static HRESULT ExecuteMsiCommitTransaction( hr = MsiEngineCommitTransaction(pRollbackBoundary); } - if (SUCCEEDED(hr)) - { - pRollbackBoundary->fActiveTransaction = FALSE; + // Assume that MsiEndTransaction can only be called once for each MsiBeginTransaction. + pRollbackBoundary->fActiveTransaction = FALSE; - ResetTransactionRegistrationState(pEngineState, TRUE); - } + ResetTransactionRegistrationState(pEngineState, TRUE); LExit: if (fCommitBeginCalled) diff --git a/src/burn/engine/msiengine.cpp b/src/burn/engine/msiengine.cpp index d306f3e0..d892b2bc 100644 --- a/src/burn/engine/msiengine.cpp +++ b/src/burn/engine/msiengine.cpp @@ -1129,8 +1129,7 @@ extern "C" HRESULT MsiEngineBeginTransaction( ExitOnFailure(hr, "Failed to begin an MSI transaction"); LExit: - ReleaseMsi(hTransactionHandle); - ReleaseHandle(hChangeOfOwnerEvent); + // Assume that MsiEndTransaction cleans up the handles. return hr; } -- cgit v1.2.3-55-g6feb