From 5a0e17b12104c5342df86e363fa35a380c96d16e Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Wed, 26 Sep 2018 19:00:31 +0800 Subject: [PATCH] Fix crash when user set common directory to an invalid path --- .../java/org/jackhuang/hmcl/setting/Settings.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java index 4e68466db..10defa3e2 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/setting/Settings.java @@ -17,11 +17,15 @@ */ package org.jackhuang.hmcl.setting; +import javafx.beans.binding.Bindings; import javafx.scene.text.Font; import org.jackhuang.hmcl.Launcher; import org.jackhuang.hmcl.game.HMCLCacheRepository; import org.jackhuang.hmcl.util.CacheRepository; +import java.nio.file.InvalidPathException; +import java.nio.file.Paths; + import static org.jackhuang.hmcl.setting.ConfigHolder.config; public class Settings { @@ -49,7 +53,15 @@ public class Settings { Profiles.init(); CacheRepository.setInstance(HMCLCacheRepository.REPOSITORY); - HMCLCacheRepository.REPOSITORY.directoryProperty().bind(config().commonDirectoryProperty()); + HMCLCacheRepository.REPOSITORY.directoryProperty().bind(Bindings.createStringBinding(() -> { + String str = config().getCommonDirectory(); + try { + Paths.get(str); + return str; + } catch (InvalidPathException e) { + return getDefaultCommonDirectory(); + } + }, config().commonDirectoryProperty())); } public Font getFont() {