cmocka runtime failure with VS 2013
When I compile master
cmocka with VS2013 (either x86 or x64) and use it with a test executable, I either get no output (when using a Release build) or an error dialog complaining of an invalid format specification (when using a Debug build).
The problem is that VS2013 doesn't support the z
length modifier (see 'C99 library support in Visual Studio 2013' and the relevant part of the VS2013 documentation), used in various places in cmocka.c
to print values of type size_t
.
One workaround would be to add a preprocessor macro similar to UintMaxTypePrintfFormat
(let's call it SizeTPrintfFormat
, for sake of argument), defined as Iu
(the Microsoft extension equivalent to zu
) for MSVC2013, and zu
for everything else:
#if defined(_MSC_VER) && MSC_VER < 1900
#define SizeTPrintfFormat "%Iu"
#else
#define SizeTPrintfFormat "%zu"
#endif // defined(_MSC_VER) && MSC_VER < 1900
Edited by Stuart Dootson