aboutsummaryrefslogtreecommitdiff
path: root/src/engine/detect.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2021-02-01 20:36:39 -0600
committerSean Hall <r.sean.hall@gmail.com>2021-02-04 22:16:10 -0600
commitcc5fe7c79aad14819df1b4cb134884b80a945141 (patch)
tree4b0ab44744a6b989f784292d438ef0654d9b03ac /src/engine/detect.cpp
parentcede270b2bd3da6bd8d5205b8834e786c8d6c1ce (diff)
downloadwix-cc5fe7c79aad14819df1b4cb134884b80a945141.tar.gz
wix-cc5fe7c79aad14819df1b4cb134884b80a945141.tar.bz2
wix-cc5fe7c79aad14819df1b4cb134884b80a945141.zip
Move registry checks for dependency ref-counting into Detect.
Diffstat (limited to 'src/engine/detect.cpp')
-rw-r--r--src/engine/detect.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/src/engine/detect.cpp b/src/engine/detect.cpp
index 63e66539..3b8d63e2 100644
--- a/src/engine/detect.cpp
+++ b/src/engine/detect.cpp
@@ -41,12 +41,28 @@ extern "C" void DetectReset(
41 ReleaseNullStr(pRegistration->sczDetectedProviderKeyBundleId); 41 ReleaseNullStr(pRegistration->sczDetectedProviderKeyBundleId);
42 pRegistration->fEnabledForwardCompatibleBundle = FALSE; 42 pRegistration->fEnabledForwardCompatibleBundle = FALSE;
43 PackageUninitialize(&pRegistration->forwardCompatibleBundle); 43 PackageUninitialize(&pRegistration->forwardCompatibleBundle);
44 pRegistration->fSelfRegisteredAsDependent = FALSE;
45
46 if (pRegistration->rgIgnoredDependencies)
47 {
48 ReleaseDependencyArray(pRegistration->rgIgnoredDependencies, pRegistration->cIgnoredDependencies);
49 }
50 pRegistration->rgIgnoredDependencies = NULL;
51 pRegistration->cIgnoredDependencies = 0;
52
53 if (pRegistration->rgDependents)
54 {
55 ReleaseDependencyArray(pRegistration->rgDependents, pRegistration->cDependents);
56 }
57 pRegistration->rgDependents = NULL;
58 pRegistration->cDependents = 0;
44 59
45 for (DWORD iPackage = 0; iPackage < pPackages->cPackages; ++iPackage) 60 for (DWORD iPackage = 0; iPackage < pPackages->cPackages; ++iPackage)
46 { 61 {
47 BURN_PACKAGE* pPackage = pPackages->rgPackages + iPackage; 62 BURN_PACKAGE* pPackage = pPackages->rgPackages + iPackage;
48 63
49 pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN; 64 pPackage->currentState = BOOTSTRAPPER_PACKAGE_STATE_UNKNOWN;
65 pPackage->fPackageProviderExists = FALSE;
50 66
51 pPackage->cache = BURN_CACHE_STATE_NONE; 67 pPackage->cache = BURN_CACHE_STATE_NONE;
52 for (DWORD iPayload = 0; iPayload < pPackage->cPayloads; ++iPayload) 68 for (DWORD iPayload = 0; iPayload < pPackage->cPayloads; ++iPayload)
@@ -69,6 +85,18 @@ extern "C" void DetectReset(
69 ReleaseNullMem(pPackage->Msp.rgTargetProducts); 85 ReleaseNullMem(pPackage->Msp.rgTargetProducts);
70 pPackage->Msp.cTargetProductCodes = 0; 86 pPackage->Msp.cTargetProductCodes = 0;
71 } 87 }
88
89 for (DWORD iProvider = 0; iProvider < pPackage->cDependencyProviders; ++iProvider)
90 {
91 BURN_DEPENDENCY_PROVIDER* pProvider = pPackage->rgDependencyProviders + iProvider;
92
93 if (pProvider->rgDependents)
94 {
95 ReleaseDependencyArray(pProvider->rgDependents, pProvider->cDependents);
96 }
97 pProvider->rgDependents = NULL;
98 pProvider->cDependents = 0;
99 }
72 } 100 }
73 101
74 for (DWORD iPatchInfo = 0; iPatchInfo < pPackages->cPatchInfo; ++iPatchInfo) 102 for (DWORD iPatchInfo = 0; iPatchInfo < pPackages->cPatchInfo; ++iPatchInfo)