Skip to content

Commit

Permalink
fix: ensure the memory set correct and not crash game
Browse files Browse the repository at this point in the history
  • Loading branch information
ci010 committed Sep 3, 2020
1 parent cd2d00b commit 8d84805
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 5 deletions.
21 changes: 20 additions & 1 deletion src/main/service/InstanceService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ export class InstanceService extends Service {
let instancePath = options.instancePath || this.state.instance.path;
let state = this.state.instance.all[instancePath];

let ignored = { runtime: true, deployments: true, server: true, vmOptions: true, mcOptions: true };
let ignored = { runtime: true, deployments: true, server: true, vmOptions: true, mcOptions: true, minMemory: true, maxMemory: true };
let result: Record<string, any> = {};
for (let key of Object.keys(options)) {
if (key in ignored) {
Expand All @@ -380,6 +380,25 @@ export class InstanceService extends Service {
}
}

if ('maxMemory' in options) {
if (typeof options.maxMemory === 'undefined') {
result.maxMemory = 0;
} else if (typeof options.maxMemory === 'number') {
result.maxMemory = result.maxMemory > 0 ? options.maxMemory : 0;
} else {
throw new Error(`Invalid Argument: Expect maxMemory to be number or undefined! Got ${typeof options.maxMemory}.`);
}
}
if ('minMemory' in options) {
if (typeof options.minMemory === 'undefined') {
result.minMemory = 0;
} else if (typeof options.minMemory === 'number') {
result.minMemory = result.minMemory > 0 ? options.minMemory : 0;
} else {
throw new Error(`Invalid Argument: Expect minMemory to be number or undefined! Got ${typeof options.maxMemory}.`);
}
}

if ('runtime' in options && options.runtime) {
let runtime = options.runtime;
let currentRuntime = state.runtime;
Expand Down
4 changes: 2 additions & 2 deletions src/main/service/LaunchService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,8 +129,8 @@ export default class LaunchService extends Service {
gamePath: minecraftFolder.root,
resourcePath: this.state.root,
javaPath,
minMemory: instance.minMemory && instance.minMemory > 0 ? instance.minMemory : undefined,
maxMemory: instance.maxMemory && instance.minMemory > 0 ? instance.maxMemory : undefined,
minMemory: instance.minMemory > 0 ? instance.minMemory : undefined,
maxMemory: instance.minMemory > 0 ? instance.maxMemory : undefined,
version,
extraExecOption: {
detached: true,
Expand Down
4 changes: 2 additions & 2 deletions src/universal/store/modules/instance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -312,10 +312,10 @@ const mod: InstanceModule = {
}

if ('minMemory' in settings) {
inst.minMemory = (typeof settings.minMemory === 'number') ? settings.minMemory : 0;
inst.minMemory = (typeof settings.minMemory === 'number') && settings.minMemory > 0 ? settings.minMemory : 0;
}
if ('maxMemory' in settings) {
inst.maxMemory = (typeof settings.maxMemory === 'number') ? settings.maxMemory : 0;
inst.maxMemory = (typeof settings.maxMemory === 'number') && settings.maxMemory > 0 ? settings.maxMemory : 0;
}

if (settings.vmOptions instanceof Array && settings.vmOptions.every(r => typeof r === 'string')) {
Expand Down

0 comments on commit 8d84805

Please sign in to comment.