Skip to content

Commit 502c48c

Browse files
committed
improve: interrupted judge will be unjudged
1 parent ff41362 commit 502c48c

3 files changed

Lines changed: 22 additions & 29 deletions

File tree

makespec/BUILDVERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
185
1+
186

src/core/taskjudger.cpp

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -336,29 +336,32 @@ auto TaskJudger::traditionalTaskPrepare() -> bool {
336336
void TaskJudger::judgeIt() {
337337
qDebug() << "Start Judging";
338338
emit taskJudgingStarted(task->getProblemTitle());
339-
judge();
340-
contestant->setCheckJudged(taskId, true);
341-
contestant->setCompileMessage(taskId, compileMessage);
342-
contestant->setCompileState(taskId, compileState);
343-
contestant->setResult(taskId, result);
344-
contestant->setMessage(taskId, message);
345-
contestant->setTimeUsed(taskId, timeUsed);
346-
contestant->setMemoryUsed(taskId, memoryUsed);
347-
contestant->setScore(taskId, score);
348-
contestant->setInputFiles(taskId, inputFiles);
349-
contestant->setSourceFile(taskId, sourceFile);
339+
if (judge()) {
340+
contestant->setCheckJudged(taskId, true);
341+
contestant->setCompileMessage(taskId, compileMessage);
342+
contestant->setCompileState(taskId, compileState);
343+
contestant->setResult(taskId, result);
344+
contestant->setMessage(taskId, message);
345+
contestant->setTimeUsed(taskId, timeUsed);
346+
contestant->setMemoryUsed(taskId, memoryUsed);
347+
contestant->setScore(taskId, score);
348+
contestant->setInputFiles(taskId, inputFiles);
349+
contestant->setSourceFile(taskId, sourceFile);
350+
} else {
351+
contestant->setCheckJudged(taskId, false);
352+
}
350353
emit judgeFinished();
351354
}
352355

353-
void TaskJudger::judge() {
356+
int TaskJudger::judge() {
354357
isJudging = 1;
355358
QString contestantName = contestant->getContestantName();
356359
if (! temporaryDir.isValid())
357-
return;
360+
return 0;
358361

359362
if (task->getTaskType() != Task::AnswersOnly)
360363
if (! traditionalTaskPrepare())
361-
return;
364+
return 0;
362365

363366
for (int i = 0; i < task->getTestCaseList().size(); i++) {
364367
timeUsed.append(QList<int>());
@@ -385,7 +388,7 @@ void TaskJudger::judge() {
385388

386389
QCoreApplication::processEvents();
387390
if (! isJudging) {
388-
return;
391+
return 0;
389392
}
390393

391394
auto curTestCase = task->getTestCase(i);
@@ -490,7 +493,7 @@ void TaskJudger::judge() {
490493
QCoreApplication::processEvents();
491494
if (! isJudging) {
492495
delete thread;
493-
return;
496+
return 0;
494497
}
495498

496499
while (thread->getNeedRejudge() && thread->getJudgeTimes() != settings->getRejudgeTimes() + 1 &&
@@ -528,17 +531,7 @@ void TaskJudger::judge() {
528531
}
529532
}
530533

531-
/* TaskResult taskResult;
532-
taskResult.compileMessage = compileMessage;
533-
taskResult.compileState = compileState;
534-
taskResult.resultState = result;
535-
taskResult.resultMessage = message;
536-
taskResult.timeUsed = timeUsed;
537-
taskResult.memoryUsed = memoryUsed;
538-
taskResult.scores = score;
539-
taskResult.inputFiles = inputFiles;
540-
taskResult.sourceFile = sourceFile;
541-
emit judgeFinished(taskResult); */
534+
return 1;
542535
}
543536

544537
void TaskJudger::makeDialogAlert(QString msg) { emit dialogAlert(std::move(msg)); }

src/core/taskjudger.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class TaskJudger : public QObject {
6868
void assign();
6969
void taskSkipped(const std::pair<int, int> &);
7070
void makeDialogAlert(QString);
71-
void judge();
71+
int judge();
7272

7373
QTemporaryDir temporaryDir;
7474

0 commit comments

Comments
 (0)