From aa052910d2cd3d4d5f0331756fc8cbb182f094fc Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Thu, 11 Oct 2018 23:33:19 +0300 Subject: [PATCH] EA-129533 - IAE: EnvironmentUtil.validate --- .../EnvironmentVariablesData.java | 28 ++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/execution/configuration/EnvironmentVariablesData.java b/platform/lang-impl/src/com/intellij/execution/configuration/EnvironmentVariablesData.java index 690567281961..a8589f63d878 100644 --- a/platform/lang-impl/src/com/intellij/execution/configuration/EnvironmentVariablesData.java +++ b/platform/lang-impl/src/com/intellij/execution/configuration/EnvironmentVariablesData.java @@ -17,6 +17,7 @@ package com.intellij.execution.configuration; import com.google.common.collect.ImmutableMap; import com.intellij.execution.configurations.GeneralCommandLine; +import com.intellij.util.EnvironmentUtil; import com.intellij.util.containers.ContainerUtil; import org.jdom.Element; import org.jetbrains.annotations.NonNls; @@ -128,7 +129,32 @@ public class EnvironmentVariablesData { else { commandLine.withParentEnvironmentType(GeneralCommandLine.ParentEnvironmentType.NONE); } - commandLine.withEnvironment(myEnvs); + commandLine.withEnvironment(getValidEnvs()); + } + + @NotNull + private Map getValidEnvs() { + boolean hasInvalid = myEnvs.entrySet().stream().anyMatch(entry -> !isValid(entry)); + if (!hasInvalid) { + return myEnvs; + } + ImmutableMap.Builder builder = ImmutableMap.builder(); + for (Map.Entry entry : myEnvs.entrySet()) { + if (isValid(entry)) { + builder.put(entry); + } + } + return builder.build(); + } + + private static boolean isValid(@NotNull Map.Entry entry) { + try { + EnvironmentUtil.validate(entry.getKey(), entry.getValue()); + return true; + } + catch (Exception e) { + return false; + } } /**