diff --git a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java index b046ba6ab..a6b317301 100644 --- a/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java +++ b/HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java @@ -142,9 +142,12 @@ public final class LauncherHelper { @Override public void onTerminate() { Platform.runLater(() -> { - Controllers.dialog(I18nException.getStackTrace(executor.getLastException()), - scriptFile == null ? Main.i18n("launch.failed") : Main.i18n("version.launch_script.failed"), - MessageBox.ERROR_MESSAGE, Controllers::closeDialog); + if (executor.getLastException() != null) + Controllers.dialog(I18nException.getStackTrace(executor.getLastException()), + scriptFile == null ? Main.i18n("launch.failed") : Main.i18n("version.launch_script.failed"), + MessageBox.ERROR_MESSAGE, Controllers::closeDialog); + else + Controllers.closeDialog(); }); } }); diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/GetTask.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/GetTask.java index 9cd1d0a2e..6caf8dc31 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/GetTask.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/GetTask.java @@ -95,7 +95,9 @@ public final class GetTask extends TaskResult { while ((len = input.read(buf)) != -1) { baos.write(buf, 0, len); read += len; - updateProgress(read, size); + + if (size >= 0) + updateProgress(read, size); if (Thread.currentThread().isInterrupted()) return; diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java index eb02d8d8d..5fca59c70 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/task/TaskExecutor.java @@ -184,7 +184,6 @@ public final class TaskExecutor { } } catch (InterruptedException e) { if (task.getSignificance().shouldLog()) { - lastException = e; Logging.LOG.log(Level.FINE, "Task aborted: " + task.getName()); task.onDone().fireEvent(new TaskEvent(this, task, true)); taskListeners.forEach(it -> it.onFailed(task, e));