diff --git a/tests/ThreadTest/ThreadTest.cpp b/tests/ThreadTest/ThreadTest.cpp index c85f7088628a8a5895ebb441680b3dd6a75dd0eb..8304d5d1456cf4ab9f1c57f0d3905f90770e9fce 100644 --- a/tests/ThreadTest/ThreadTest.cpp +++ b/tests/ThreadTest/ThreadTest.cpp @@ -409,6 +409,7 @@ int ThreadParser::parse(int fileNum) { if (gRunInfo.dom) { // Do a DOM parse + fXercesDOMParser->resetDocumentPool(); if (gRunInfo.inMemory) fXercesDOMParser->parse(*mbis); else @@ -866,6 +867,16 @@ void threadMain (void *param) int checkSum = 0; checkSum = thParser->parse(docNum); + // SRD -- for the case where we skip the preparse we will have nothing + // to compare the first parse's results to ... so if this looks like + // first parser move the checkSum back into the gRunInfo data for this + // file. + + if (gRunInfo.files[docNum].checkSum == 0) + { + gRunInfo.files[docNum].checkSum = checkSum; + } + if (checkSum != gRunInfo.files[docNum].checkSum) { fprintf(stderr, "\nThread %d: Parse Check sum error on file \"%s\". Expected %x, got %x\n", @@ -939,7 +950,14 @@ int main (int argc, char **argv) // ReadFilesIntoMemory(); + // SRD -- initialize checksums to zero so we can check first parse and if + // zero then we need to move first parse's checksum into array + for (int n = 0; n < gRunInfo.numInputFiles; n++) + { + gRunInfo.files[n].checkSum = 0; + } +#ifdef DOINITIALPARSE // // While we are still single threaded, parse each of the documents // once, to check for errors, and to note the checksum. @@ -977,6 +995,7 @@ int main (int argc, char **argv) } delete mainParser; +#endif // // Fire off the requested number of parallel threads