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