aboutsummaryrefslogtreecommitdiff
path: root/src/engine/cache.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/cache.cpp')
-rw-r--r--src/engine/cache.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/engine/cache.cpp b/src/engine/cache.cpp
index 16f2c1e5..764de065 100644
--- a/src/engine/cache.cpp
+++ b/src/engine/cache.cpp
@@ -440,7 +440,8 @@ extern "C" HRESULT CacheGetLocalSourcePaths(
440 __in_z_opt LPCWSTR wzLayoutDirectory, 440 __in_z_opt LPCWSTR wzLayoutDirectory,
441 __in BURN_VARIABLES* pVariables, 441 __in BURN_VARIABLES* pVariables,
442 __inout LPWSTR** prgSearchPaths, 442 __inout LPWSTR** prgSearchPaths,
443 __out DWORD* pcSearchPaths 443 __out DWORD* pcSearchPaths,
444 __out DWORD* pdwLikelySearchPath
444 ) 445 )
445{ 446{
446 HRESULT hr = S_OK; 447 HRESULT hr = S_OK;
@@ -452,6 +453,7 @@ extern "C" HRESULT CacheGetLocalSourcePaths(
452 BOOL fTryRelativePath = FALSE; 453 BOOL fTryRelativePath = FALSE;
453 BOOL fSourceIsAbsolute = FALSE; 454 BOOL fSourceIsAbsolute = FALSE;
454 DWORD cSearchPaths = 0; 455 DWORD cSearchPaths = 0;
456 DWORD dwLikelySearchPath = 0;
455 457
456 AssertSz(vfInitializedCache, "Cache wasn't initialized"); 458 AssertSz(vfInitializedCache, "Cache wasn't initialized");
457 459
@@ -473,6 +475,12 @@ extern "C" HRESULT CacheGetLocalSourcePaths(
473 hr = StrAllocString(psczPath, wzSourcePath, 0); 475 hr = StrAllocString(psczPath, wzSourcePath, 0);
474 ExitOnFailure(hr, "Failed to copy absolute source path."); 476 ExitOnFailure(hr, "Failed to copy absolute source path.");
475 } 477 }
478 else
479 {
480 // If none of the paths exist, then most BAs will want to prompt the user with a possible path.
481 // The destination path is a temporary location and so not really a possible path.
482 dwLikelySearchPath = 1;
483 }
476 484
477 // Try the destination path next. 485 // Try the destination path next.
478 hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(prgSearchPaths), cSearchPaths + 1, sizeof(LPWSTR), BURN_CACHE_MAX_SEARCH_PATHS); 486 hr = MemEnsureArraySize(reinterpret_cast<LPVOID*>(prgSearchPaths), cSearchPaths + 1, sizeof(LPWSTR), BURN_CACHE_MAX_SEARCH_PATHS);
@@ -593,6 +601,7 @@ LExit:
593 601
594 AssertSz(cSearchPaths <= BURN_CACHE_MAX_SEARCH_PATHS, "Got more than BURN_CACHE_MAX_SEARCH_PATHS search paths"); 602 AssertSz(cSearchPaths <= BURN_CACHE_MAX_SEARCH_PATHS, "Got more than BURN_CACHE_MAX_SEARCH_PATHS search paths");
595 *pcSearchPaths = cSearchPaths; 603 *pcSearchPaths = cSearchPaths;
604 *pdwLikelySearchPath = dwLikelySearchPath;
596 605
597 return hr; 606 return hr;
598} 607}