Skip to content

Commit 1bfb50c

Browse files
committed
Loader: Cache some json node references.
1 parent c77d617 commit 1bfb50c

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

src/loader/manifest_file.cpp

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -813,24 +813,29 @@ void ApiLayerManifestFile::CreateIfValid(ManifestFileType type, const std::strin
813813
LoaderLogger::LogErrorMessage("", error_ss.str());
814814
return;
815815
}
816+
817+
// Figure out enabled state of implicit layers
816818
if (MANIFEST_TYPE_IMPLICIT_API_LAYER == type) {
817819
bool enabled = true;
818820
// Implicit layers require the disable environment variable.
819-
if (layer_root_node["disable_environment"].isNull() || !layer_root_node["disable_environment"].isString()) {
821+
auto &disable_env_node = layer_root_node["disable_environment"];
822+
if (disable_env_node.isNull() || !disable_env_node.isString()) {
820823
error_ss << "Implicit layer " << filename << " is missing \"disable_environment\"";
821824
LoaderLogger::LogErrorMessage("", error_ss.str());
822825
return;
823826
}
824-
// Check if there's an enable environment variable provided
825-
if (!layer_root_node["enable_environment"].isNull() && layer_root_node["enable_environment"].isString()) {
826-
std::string env_var = layer_root_node["enable_environment"].asString();
827+
// Check if there's an enable environment variable provided: If so, it must be set in the environment.
828+
auto &enable_env_node = layer_root_node["enable_environment"];
829+
if (!enable_env_node.isNull() && enable_env_node.isString()) {
830+
std::string env_var = enable_env_node.asString();
827831
// If it's not set in the environment, disable the layer
828832
if (!PlatformUtilsGetEnvSet(env_var.c_str())) {
829833
enabled = false;
830834
}
831835
}
836+
832837
// Check for the disable environment variable, which must be provided in the JSON
833-
std::string env_var = layer_root_node["disable_environment"].asString();
838+
std::string env_var = disable_env_node.asString();
834839
// If the env var is set, disable the layer. Disable env var overrides enable above
835840
if (PlatformUtilsGetEnvSet(env_var.c_str())) {
836841
enabled = false;

0 commit comments

Comments
 (0)