Skip to content

Commit

Permalink
Update IsAPIContractVxAvailable to be multi thread safe. Previously a…
Browse files Browse the repository at this point in the history
… thread could return an uninitialized value for isAPIContractVxAvailable if another thread was executing at the same time and flipped the initialized flag to true before intitializing the variable. (#6665)
  • Loading branch information
StephenLPeters authored Feb 1, 2022
1 parent b5a0232 commit e15d2df
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion dev/dll/SharedHelpers.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -223,11 +223,11 @@ template <uint16_t APIVersion> bool SharedHelpers::IsAPIContractVxAvailable()
static bool isAPIContractVxAvailable = false;
if (!isAPIContractVxAvailableInitialized)
{
isAPIContractVxAvailableInitialized = true;
// The CBS package is only ever used as a part of the Windows build. Therefore, we can assume that
// all API contracts are present since we can never be running these binaries on a windows build
// that does not match the windows sdk these binaries were compiled against.
isAPIContractVxAvailable = IsInCBSPackage() ? true : winrt::ApiInformation::IsApiContractPresent(L"Windows.Foundation.UniversalApiContract", APIVersion);
isAPIContractVxAvailableInitialized = true;
}

return isAPIContractVxAvailable;
Expand Down

0 comments on commit e15d2df

Please sign in to comment.