X-Git-Url: https://git.ucc.asn.au/?p=progcomp2012.git;a=blobdiff_plain;f=judge%2Fmanager%2Fprogram.cpp;h=d5463f4073a71a3f13fefdbbc85e1ffd2c87cc5e;hp=588f7146c323f19f47369a5ab52845c40ebbc12f;hb=e1153eebe8cfd0c881cef2ff8fca63f130e736b3;hpb=de72851794e06d2e179799b95e1ea2955b9560b1 diff --git a/judge/manager/program.cpp b/judge/manager/program.cpp index 588f714..d5463f4 100644 --- a/judge/manager/program.cpp +++ b/judge/manager/program.cpp @@ -140,12 +140,13 @@ bool Program::SendMessage(const char * print, ...) */ bool Program::GetMessage(string & buffer, double timeout) { - if (!Running()) + if (!Running() || timeout == 0) return false; assert(&buffer != NULL); GetterThread getterThread(input, buffer); assert(&(getterThread.buffer) != NULL); + TimerThread timerThread(timeout*1000000); getterThread.Start(); @@ -164,7 +165,8 @@ bool Program::GetMessage(string & buffer, double timeout) } getterThread.Stop(); - timerThread.Stop(); + if (timeout > 0) + timerThread.Stop();