diff --git a/packages/hydrojudge/src/judge/run.ts b/packages/hydrojudge/src/judge/run.ts index b677137fc..6e487f83d 100644 --- a/packages/hydrojudge/src/judge/run.ts +++ b/packages/hydrojudge/src/judge/run.ts @@ -18,6 +18,7 @@ export const judge = async (ctx: JudgeTask) => { // Allow 2x limits for better debugging time: parseTimeMS(ctx.config.time || '1s') * 2, memory: parseMemoryMB(ctx.config.memory || '128m'), + filename: ctx.config.filename, addressSpaceLimit: address_space_limit, processLimit: process_limit, }, diff --git a/packages/hydrojudge/src/sandbox.ts b/packages/hydrojudge/src/sandbox.ts index e91d5ccc6..9b00b523f 100644 --- a/packages/hydrojudge/src/sandbox.ts +++ b/packages/hydrojudge/src/sandbox.ts @@ -74,7 +74,7 @@ function parseArgs(execute: string): string[] { function proc(params: Parameter): Cmd { const copyOut = supportOptional - ? params.copyOut + ? (params.copyOut || []) : (params.copyOut || []).map((i) => (i.endsWith('?') ? i.substring(0, i.length - 1) : i)); const stdioLimit = parseMemoryMB(getConfig('stdio_size')); const stdioSize = params.cacheStdoutAndStderr ? stdioLimit : 4; @@ -82,7 +82,7 @@ function proc(params: Parameter): Cmd { if (params.cacheStdoutAndStderr) { copyOutCached.push('stdout', 'stderr'); if (params.filename) copyOutCached.push(`${params.filename}.out?`); - } + } else if (params.filename) copyOut.push(`${params.filename}.out${supportOptional ? '?' : ''}`); const copyIn = { ...(params.copyIn || {}) }; const stdin = params.stdin || { content: '' }; if (params.filename) copyIn[`${params.filename}.in`] = stdin;