diff --git a/platform/platform-impl/src/com/intellij/diagnostic/VMOptions.java b/platform/platform-impl/src/com/intellij/diagnostic/VMOptions.java index 7e798a5e879e..c94c8d66ad25 100644 --- a/platform/platform-impl/src/com/intellij/diagnostic/VMOptions.java +++ b/platform/platform-impl/src/com/intellij/diagnostic/VMOptions.java @@ -1,17 +1,5 @@ /* - * Copyright 2000-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. */ package com.intellij.diagnostic; @@ -175,7 +163,7 @@ public class VMOptions { } vmOptionsFile = new File(vmOptionsFile).getAbsolutePath(); - if (!FileUtil.isAncestor(PathManager.getHomePath(), vmOptionsFile, true)) { + if (!FileUtil.isAncestor(canonicalPath(PathManager.getHomePath()), canonicalPath(vmOptionsFile), true)) { // a file is located outside the IDE installation - meaning it is safe to overwrite return new File(vmOptionsFile); } @@ -192,6 +180,15 @@ public class VMOptions { return new File(location, fileName); } + private static String canonicalPath(String path) { + try { + return new File(path).getCanonicalPath(); + } + catch (IOException e) { + return path; + } + } + // /** @deprecated use {@link #readOption(MemoryKind, boolean)} (to be removed in IDEA 2018) */ public static int readXmx() {