diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt index 5f59da71..210fa82c 100644 --- a/expat/CMakeLists.txt +++ b/expat/CMakeLists.txt @@ -687,6 +687,10 @@ if(EXPAT_BUILD_TESTS) target_link_libraries(${_target} ${LIB_BSD}) endif() endforeach() + + add_executable(benchmark tests/benchmark/benchmark.c) + set_property(TARGET benchmark PROPERTY RUNTIME_OUTPUT_DIRECTORY tests/benchmark) + target_link_libraries(benchmark expat) endif() # diff --git a/expat/tests/benchmark/benchmark.c b/expat/tests/benchmark/benchmark.c index 2c4eb78e..a611c571 100644 --- a/expat/tests/benchmark/benchmark.c +++ b/expat/tests/benchmark/benchmark.c @@ -33,6 +33,8 @@ */ #include +#include +#include // ptrdiff_t #include #include #include @@ -62,7 +64,8 @@ main(int argc, char *argv[]) { char *XMLBuf, *XMLBufEnd, *XMLBufPtr; FILE *fd; struct stat fileAttr; - int nrOfLoops, bufferSize, fileSize, i, isFinal; + int nrOfLoops, bufferSize, i, isFinal; + size_t fileSize; int j = 0, ns = 0; clock_t tstart, tend; double cpuTime = 0.0; @@ -114,12 +117,13 @@ main(int argc, char *argv[]) { isFinal = 0; tstart = clock(); do { - int parseBufferSize = XMLBufEnd - XMLBufPtr; - if (parseBufferSize <= bufferSize) + ptrdiff_t parseBufferSize = XMLBufEnd - XMLBufPtr; + if (parseBufferSize <= (ptrdiff_t)bufferSize) isFinal = 1; else parseBufferSize = bufferSize; - if (! XML_Parse(parser, XMLBufPtr, parseBufferSize, isFinal)) { + assert(parseBufferSize <= (ptrdiff_t)bufferSize); + if (! XML_Parse(parser, XMLBufPtr, (int)parseBufferSize, isFinal)) { fprintf(stderr, "error '%" XML_FMT_STR "' at line %" XML_FMT_INT_MOD "u character %" XML_FMT_INT_MOD "u\n",