return;
DelayedDiagID = DiagID;
- DelayedDiagArg1 = Arg1;
- DelayedDiagArg1 = Arg2;
+ DelayedDiagArg1 = Arg1.str();
+ DelayedDiagArg2 = Arg2.str();
}
void Diagnostic::ReportDelayed() {
bool Emitted = DiagObj->ProcessDiag();
// Clear out the current diagnostic object.
+ unsigned DiagID = DiagObj->CurDiagID;
DiagObj->Clear();
// If there was a delayed diagnostic, emit it now.
- if (DiagObj->DelayedDiagID)
+ if (DiagObj->DelayedDiagID && DiagObj->DelayedDiagID != DiagID)
DiagObj->ReportDelayed();
// This diagnostic is dead.