aboutsummaryrefslogtreecommitdiff
path: root/src/engine/detect.cpp
diff options
context:
space:
mode:
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)