summaryrefslogtreecommitdiff
path: root/scanf
diff options
context:
space:
mode:
authorKevin Ryde <user42@zip.com.au>2003-12-06 23:48:29 +0100
committerKevin Ryde <user42@zip.com.au>2003-12-06 23:48:29 +0100
commit2291c473f4b22a0757e512fae48159073ed96104 (patch)
treeb7db9cb1320cafcf945fceca2a630db8d2407a1a /scanf
parent4deec60256d8bfe41c61a5f64c2b6a04745a141f (diff)
downloadgmp-2291c473f4b22a0757e512fae48159073ed96104.tar.gz
* scanf/sscanffuns.c (scan): Take varargs per gmp_doscan_scan_t, to
avoid any possible problems with a varargs call to a fixargs function.
Diffstat (limited to 'scanf')
-rw-r--r--scanf/sscanffuns.c30
1 files changed, 28 insertions, 2 deletions
diff --git a/scanf/sscanffuns.c b/scanf/sscanffuns.c
index 9152c1cc9..f5dff8385 100644
--- a/scanf/sscanffuns.c
+++ b/scanf/sscanffuns.c
@@ -27,11 +27,37 @@ MA 02111-1307, USA. */
#include "gmp.h"
#include "gmp-impl.h"
+#if HAVE_STDARG
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+
static int
-scan (const char **sp, const char *fmt, void *p1, void *p2)
+#if HAVE_STDARG
+scan (const char **sp, const char *fmt, ...)
+#else
+scan (va_alist)
+ va_dcl
+#endif
{
- return sscanf (*sp, fmt, p1, p2);
+ va_list ap;
+ int ret;
+#if HAVE_STDARG
+ va_start (ap, fmt);
+#else
+ const char **sp;
+ const char *fmt;
+ va_start (ap);
+ sp = va_arg (ap, const char **);
+ fmt = va_arg (ap, const char *);
+#endif
+
+ ret = vsscanf (*sp, fmt, ap);
+
+ va_end (ap);
+ return ret;
}
static void