diff options
author | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2017-05-19 10:45:25 +0000 |
---|---|---|
committer | vlefevre <vlefevre@280ebfd0-de03-0410-8827-d642c229c3f4> | 2017-05-19 10:45:25 +0000 |
commit | 58704e8030a37a1dbac47e66430c212f07b0a097 (patch) | |
tree | 9fca0c3cf3947a030eaba2c897ea0a7d5ac1aec8 | |
parent | e000089438302ea9cc906fe54d7d3d05e6c9361a (diff) | |
download | mpfr-58704e8030a37a1dbac47e66430c212f07b0a097.tar.gz |
[tests/tsprintf.c] Fixed portability issues: The va_end(3) man page
of Linux Programmer's Manual says: "On some systems, va_end contains
a closing '}' matching a '{' in va_start, so that both macros must
occur in the same function, and in a way that allows this."
git-svn-id: svn://scm.gforge.inria.fr/svn/mpfr/trunk@11500 280ebfd0-de03-0410-8827-d642c229c3f4
-rw-r--r-- | tests/tsprintf.c | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/tests/tsprintf.c b/tests/tsprintf.c index 5d4029744..4d99ec396 100644 --- a/tests/tsprintf.c +++ b/tests/tsprintf.c @@ -117,20 +117,19 @@ check_vsprintf (const char *expected, const char *fmt, ...) int n0, n1, p; char buffer[BUF_SIZE]; va_list ap0, ap1; - va_start (ap0, fmt); - va_start (ap1, fmt); + va_start (ap0, fmt); n0 = mpfr_vsprintf (buffer, fmt, ap0); + va_end (ap0); + if (strcmp (buffer, expected) != 0) { printf ("Error in mpfr_vsprintf (s, \"%s\", ...);\n", fmt); printf ("expected: \"%s\"\ngot: \"%s\"\n", expected, buffer); - - va_end (ap0); - va_end (ap1); exit (1); } - va_end (ap0); + + va_start (ap1, fmt); /* test mpfr_snprintf */ p = (int) (randlimb () % n0); @@ -148,29 +147,28 @@ check_vsprintf (const char *expected, const char *fmt, ...) exit (1); } } + + va_end (ap1); + if (n0 != n1) { printf ("Error in mpfr_vsnprintf (s, %d, \"%s\", ...) return value\n", p, fmt); printf ("expected: %d\ngot: %d\n", n0, n1); - - va_end (ap1); exit (1); } if ((p > 1 && strncmp (expected, buffer, p-1) != 0) || (p == 1 && buffer[0] != '\0')) { char part_expected[BUF_SIZE]; + strncpy (part_expected, expected, p); part_expected[p-1] = '\0'; printf ("Error in mpfr_vsnprintf (s, %d, \"%s\", ...);\n", p, fmt); printf ("expected: \"%s\"\ngot: \"%s\"\n", part_expected, buffer); - - va_end (ap1); exit (1); } - va_end (ap1); return n0; } |