On Tuesday 19 November 2024 13:42:19 Pali Rohár wrote:
> ---
>  mingw-w64-crt/Makefile.am           |  1 +
>  mingw-w64-crt/testcases/t_vsscanf.c | 33 +++++++++++++++++++++++++++++
>  2 files changed, 34 insertions(+)
>  create mode 100644 mingw-w64-crt/testcases/t_vsscanf.c
> 
> diff --git a/mingw-w64-crt/Makefile.am b/mingw-w64-crt/Makefile.am
> index ae3b04c1e8a4..5330145ebe10 100644
> --- a/mingw-w64-crt/Makefile.am
> +++ b/mingw-w64-crt/Makefile.am
> @@ -4236,6 +4236,7 @@ testcase_progs = \
>    testcases/t_tls1 \
>    testcases/t_trycatch \
>    testcases/t_stat_slash \
> +  testcases/t_vsscanf \
>    testcases/t_wreaddir \
>    testcases/t_fseeko64
>  
> diff --git a/mingw-w64-crt/testcases/t_vsscanf.c 
> b/mingw-w64-crt/testcases/t_vsscanf.c
> new file mode 100644
> index 000000000000..743bfcf2f5d5
> --- /dev/null
> +++ b/mingw-w64-crt/testcases/t_vsscanf.c
> @@ -0,0 +1,33 @@
> +#define __USE_MINGW_ANSI_STDIO 0
> +
> +#include <stdio.h>
> +#include <stdarg.h>
> +#include <string.h>
> +
> +__attribute__((__format__(scanf, 2, 3)))
> +static int call_vsscanf(const char *str, const char *format, ...)
> +{
> +  int ret;
> +  va_list ap;
> +  va_start(ap, format);
> +  ret = vsscanf(str, format, ap);
> +  va_end(ap);
> +  return ret;
> +}
> +
> +int main()
> +{
> +  char b[51];
> +  call_vsscanf(
> +    "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY",
> +    "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c"
> +    "%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c",
> +    &b[0],&b[1],&b[2],&b[3],&b[4],&b[5],&b[6],&b[7],&b[8],&b[9],&b[10],
> +    &b[11],&b[12],&b[13],&b[14],&b[15],&b[16],&b[17],&b[18],&b[19],&b[20],
> +    &b[21],&b[22],&b[23],&b[24],&b[25],&b[26],&b[27],&b[28],&b[29],&b[30],
> +    &b[31],&b[32],&b[33],&b[34],&b[35],&b[36],&b[37],&b[38],&b[39],&b[40],
> +    &b[41],&b[42],&b[43],&b[44],&b[45],&b[46],&b[47],&b[48],&b[49],&b[50]
> +  );
> +  printf("b=%.51s\n", b);
> +  return memcmp(b, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY", 
> 51) == 0;
> +}
> -- 
> 2.20.1
> 

I took this test from my older email:
https://sourceforge.net/p/mingw-w64/mailman/message/37605353/

I thought that it is a good idea to have it in existing mingw-w64
test suite, as I figured out that mingw-w64 has its own test suite.

And now after retesting it with make check and wine (as described in
other email) I figured out that it has wrong return value.

The test for make check must return zero on success, but
"memcmp(...) == 0" expression return true (1) on success.

So the "== 0" at the end should be removed. So just as:

  return memcmp(b, "abcd...", 51);


_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to