diff options
Diffstat (limited to 'src/engine/detect.cpp')
-rw-r--r-- | src/engine/detect.cpp | 28 |
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) |