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) |
