From: Jeremie Courreges-Anglas Subject: hypermail-2.4.0 To: ports@openbsd.org Date: Mon, 29 Jun 2026 19:28:46 +0200 Hi there, I don't use ths port but it appeared broken since clang 22 on arm64 and I noticed there was an update available since 2019. It solves (some of) the C issues in previous releases. If you use the port please give it a try and report. Index: Makefile =================================================================== RCS file: /home/cvs/ports/mail/hypermail/Makefile,v diff -u -p -r1.41 Makefile --- Makefile 25 Jun 2026 10:27:57 -0000 1.41 +++ Makefile 27 Jun 2026 06:02:08 -0000 @@ -1,14 +1,12 @@ COMMENT= generate a cross-referenced HTML mail archive -VERSION= 2.3.0 +VERSION= 2.4.0 DISTNAME= hypermail-${VERSION} CATEGORIES= mail www -REVISION= 1 HOMEPAGE= https://www.hypermail-project.org/ -SITES= ${HOMEPAGE} -WRKDIST= ${WRKDIR}/hypermail +SITES= https://github.com/hypermail-project/hypermail/releases/download/v${VERSION}/ LIB_DEPENDS+= devel/pcre @@ -20,9 +18,6 @@ CONFIGURE_STYLE= gnu MODGNU_CONFIG_GUESS_DIRS= ${WRKSRC} ${WRKSRC}/src/pcre CONFIGURE_ARGS= --with-htmldir=${PREFIX}/share/doc/hypermail \ --disable-i18n -CONFIGURE_ENV= CFLAGS="${CFLAGS} -DHAVE_VFSCANF" \ - INCLUDES="-I${LOCALBASE}/include" \ - LDFLAGS="-L${LOCALBASE}/lib" ALL_TARGET= hypermail MAKE_FLAGS= WARNINGS='' @@ -41,6 +36,10 @@ CONFIGURE_ARGS +=--without-gdbm NO_TEST= Yes DOCS= *.html *.png attachments.txt + +# cleanup compilation remnants from other systems +post-extract: + rm ${WRKSRC}/src/trio/*.[ao] do-install: ${INSTALL_PROGRAM} ${WRKBUILD}/src/hypermail ${PREFIX}/bin Index: distinfo =================================================================== RCS file: /home/cvs/ports/mail/hypermail/distinfo,v diff -u -p -r1.10 distinfo --- distinfo 18 Sep 2018 08:18:01 -0000 1.10 +++ distinfo 27 Jun 2026 06:02:08 -0000 @@ -1,2 +1,2 @@ -SHA256 (hypermail-2.3.0.tar.gz) = YZk4sM9U6ueG827yN/EG73v/elxpkEyjKv2NR78WBdE= -SIZE (hypermail-2.3.0.tar.gz) = 1280010 +SHA256 (hypermail-2.4.0.tar.gz) = +XmVubsezoiJaEZ82tBePap2Yv8+Olc543i0863rJsY= +SIZE (hypermail-2.4.0.tar.gz) = 4545735 Index: patches/patch-Makefile_in =================================================================== RCS file: patches/patch-Makefile_in diff -N patches/patch-Makefile_in --- patches/patch-Makefile_in 11 Mar 2022 19:34:37 -0000 1.7 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,14 +0,0 @@ ---- Makefile.in.orig Wed Mar 5 23:31:52 2003 -+++ Makefile.in Wed Mar 5 23:32:23 2003 -@@ -28,9 +28,9 @@ INSTALL_PROG=@INSTALL@ - - # Compiler to use - CC=@CC@ --CFLAGS=@CFLAGS@ @INCLUDES@ -Ipcre -DTRIO_MINIMAL $(WARNINGS) -+CFLAGS=@CFLAGS@ @INCLUDES@ -DTRIO_MINIMAL $(WARNINGS) - LIBS=@LIBS@ --LDFLAGS=@LDFLAGS@ -Lpcre -+LDFLAGS=@LDFLAGS@ - - all: hypermail support - Index: patches/patch-configure =================================================================== RCS file: patches/patch-configure diff -N patches/patch-configure --- patches/patch-configure 11 Mar 2022 19:34:37 -0000 1.7 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,31 +0,0 @@ -Index: configure ---- configure.orig -+++ configure -@@ -546,14 +546,11 @@ fi - - - --LDFLAGS="" - LIBS="" - EXTRA_LIBS="" --INCLUDES="" - GDBM_INCLUDE="" - GDBM_LIB="" - FNV_DEP="" --SUBDIRS="src/pcre" - - - ac_aux_dir= -@@ -2016,11 +2013,9 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = ye - GDBM_LIB="-lgdbm" - else - echo "$ac_t""no" 1>&6 --fi -- - - LDFLAGS="$old_LDFLAGS" -- -+fi - - if test "$THIS_PREFIX" != "" && test "$THIS_PREFIX" != "/usr"; then - THIS_LFLAGS="$THIS_PREFIX/lib" Index: patches/patch-docs_hmrc_4 =================================================================== RCS file: /home/cvs/ports/mail/hypermail/patches/patch-docs_hmrc_4,v diff -u -p -r1.9 patch-docs_hmrc_4 --- patches/patch-docs_hmrc_4 11 Mar 2022 19:34:37 -0000 1.9 +++ patches/patch-docs_hmrc_4 27 Jun 2026 06:02:08 -0000 @@ -2,7 +2,7 @@ Index: docs/hmrc.4 --- docs/hmrc.4.orig +++ docs/hmrc.4 @@ -1,4 +1,4 @@ --.TH hmrc 4 "February 04, 2004" +-.TH hmrc 4 "July 19, 2018" +.TH hmrc 5 "February 04, 2004" .SH NAME hmrc \- Hypermail configuration file Index: patches/patch-docs_hmrc_html =================================================================== RCS file: /home/cvs/ports/mail/hypermail/patches/patch-docs_hmrc_html,v diff -u -p -r1.6 patch-docs_hmrc_html --- patches/patch-docs_hmrc_html 11 Mar 2022 19:34:37 -0000 1.6 +++ patches/patch-docs_hmrc_html 27 Jun 2026 06:02:08 -0000 @@ -1,12 +1,12 @@ Index: docs/hmrc.html --- docs/hmrc.html.orig +++ docs/hmrc.html -@@ -1373,7 +1373,7 @@ if that is what you use to specify the archive directo -
- hypermail(1), -   --hmrc(4), -+hmrc(5), -   - Hypermail -   +@@ -1567,7 +1567,7 @@ that is what you use to specify the archive directory. +
+ See Also +
hypermail(1),   +-hmrc(4),   hmrc(5),   Hypermail   and   + Customizing Hypermail + Pages and Adding Index: patches/patch-src_Makefile_in =================================================================== RCS file: /home/cvs/ports/mail/hypermail/patches/patch-src_Makefile_in,v diff -u -p -r1.7 patch-src_Makefile_in --- patches/patch-src_Makefile_in 11 Mar 2022 19:34:37 -0000 1.7 +++ patches/patch-src_Makefile_in 27 Jun 2026 06:02:08 -0000 @@ -1,25 +1,21 @@ Index: src/Makefile.in --- src/Makefile.in.orig +++ src/Makefile.in -@@ -29,10 +29,10 @@ SPLINTFLAGS=-Ipcre - #WNOERROR=-Werror - #WARNINGS=$(WNOERROR) -ansi -pedantic -Wall -Wtraditional -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Dlint +@@ -74,7 +74,7 @@ fnv/libfnv.a: + @cd fnv; $(MAKE) libfnv.a CC="$(CC)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" --CFLAGS=@CFLAGS@ @INCLUDES@ -Ipcre -DTRIO_MINIMAL $(WARNINGS) -+CFLAGS=@CFLAGS@ @INCLUDES@ -DTRIO_MINIMAL $(WARNINGS) - YACC=@YACC@ - NETLIBS=@LIBS@ --LDFLAGS=@LDFLAGS@ -Lpcre/.libs -+LDFLAGS=@LDFLAGS@ - MISC_LIBS= -lm -lpcre - OPT_LIBS=@EXTRA_LIBS@ + hypermail$(SUFFIX): $(OBJS) +- $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(OBJS) $(OPT_LIBS) $(MISC_LIBS) ++ $(CC) -o $@ $(CFLAGS) $(LDFLAGS) $(OBJS) $(OPT_LIBS) $(MISC_LIBS) $(LIBS) + chmod 0755 $@ -@@ -58,7 +58,7 @@ MAILOBJS= mail.o ../libcgi/libcgi.a - .c.o: - $(CC) -c $(CFLAGS) $< + mail$(SUFFIX): $(MAILOBJS) +@@ -82,7 +82,7 @@ mail$(SUFFIX): $(MAILOBJS) + chmod 0755 $@ --all: pcre/.libs/libpcre.a @FNV_DEP@ hypermail$(SUFFIX) mail$(SUFFIX) lang$(SUFFIX) -+all: @FNV_DEP@ hypermail$(SUFFIX) mail$(SUFFIX) lang$(SUFFIX) + lang$(SUFFIX): lang.c lang.h +- $(CC) -DLANG_PROG $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ lang.c $(MISC_LIBS) ++ $(CC) -DLANG_PROG $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ lang.c $(MISC_LIBS) $(LIBS) - pcre/.libs/libpcre.a: - @cd pcre; $(MAKE) CC="$(CC)" CFLAGS="$(CFLAGS)" ; rm -f .libs/lib*.so* + ../libcgi/libcgi.a: + @cd ../libcgi; $(MAKE) all CC="$(CC)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CPPFLAGS)" Index: patches/patch-src_parse_c =================================================================== RCS file: patches/patch-src_parse_c diff -N patches/patch-src_parse_c --- patches/patch-src_parse_c 11 Mar 2022 19:34:37 -0000 1.6 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -Index: src/parse.c ---- src/parse.c.orig -+++ src/parse.c -@@ -61,7 +61,7 @@ - #include "../lcc/lcc_extras.h" - #endif - --extern char *mktemp(char *); -+/* extern char *mktemp(char *); */ - - typedef enum { - ENCODE_NORMAL, Index: patches/patch-src_trio_c =================================================================== RCS file: patches/patch-src_trio_c diff -N patches/patch-src_trio_c --- patches/patch-src_trio_c 25 Jun 2026 10:27:57 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,630 +0,0 @@ -Remade workaround for uninitialized va_list -https://sourceforge.net/p/ctrio/git/ci/acc21f6fea12d32d2f5790b05e8aa000423106a2/ - -Index: src/trio.c ---- src/trio.c.orig -+++ src/trio.c -@@ -1148,7 +1148,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - int type, - TRIO_CONST char *format, - trio_parameter_t *parameters, -- va_list *arglist, -+ va_list arglist, - trio_pointer_t *argarray) - { - /* Count the number of times a parameter is referenced */ -@@ -1183,9 +1183,6 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - int num; - char *tmpformat; - -- /* One and only one of arglist and argarray must be used */ -- assert((arglist != NULL) ^ (argarray != NULL)); -- - /* - * The 'parameters' array is not initialized, but we need to - * know which entries we have used. -@@ -1925,14 +1922,14 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - if (flags & FLAGS_WIDECHAR) - { - parameters[i].data.wstring = (argarray == NULL) -- ? va_arg(*arglist, trio_wchar_t *) -+ ? va_arg(arglist, trio_wchar_t *) - : (trio_wchar_t *)(argarray[num]); - } - else - #endif - { - parameters[i].data.string = (argarray == NULL) -- ? va_arg(*arglist, char *) -+ ? va_arg(arglist, char *) - : (char *)(argarray[num]); - } - break; -@@ -1944,7 +1941,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - case FORMAT_COUNT: - case FORMAT_UNKNOWN: - parameters[i].data.pointer = (argarray == NULL) -- ? va_arg(*arglist, trio_pointer_t ) -+ ? va_arg(arglist, trio_pointer_t ) - : argarray[num]; - break; - -@@ -1954,7 +1951,7 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - { - if (argarray == NULL) - parameters[i].data.pointer = -- (trio_pointer_t)va_arg(*arglist, trio_pointer_t); -+ (trio_pointer_t)va_arg(arglist, trio_pointer_t); - else - { - if (parameters[i].type == FORMAT_CHAR) -@@ -2012,36 +2009,36 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - #if defined(QUALIFIER_SIZE_T) || defined(QUALIFIER_SIZE_T_UPPER) - if (parameters[i].flags & FLAGS_SIZE_T) - parameters[i].data.number.as_unsigned = (argarray == NULL) -- ? (trio_uintmax_t)va_arg(*arglist, size_t) -+ ? (trio_uintmax_t)va_arg(arglist, size_t) - : (trio_uintmax_t)(*((size_t *)argarray[num])); - else - #endif - #if defined(QUALIFIER_PTRDIFF_T) - if (parameters[i].flags & FLAGS_PTRDIFF_T) - parameters[i].data.number.as_unsigned = (argarray == NULL) -- ? (trio_uintmax_t)va_arg(*arglist, ptrdiff_t) -+ ? (trio_uintmax_t)va_arg(arglist, ptrdiff_t) - : (trio_uintmax_t)(*((ptrdiff_t *)argarray[num])); - else - #endif - #if defined(QUALIFIER_INTMAX_T) - if (parameters[i].flags & FLAGS_INTMAX_T) - parameters[i].data.number.as_unsigned = (argarray == NULL) -- ? (trio_uintmax_t)va_arg(*arglist, trio_intmax_t) -+ ? (trio_uintmax_t)va_arg(arglist, trio_intmax_t) - : (trio_uintmax_t)(*((trio_intmax_t *)argarray[num])); - else - #endif - if (parameters[i].flags & FLAGS_QUAD) - parameters[i].data.number.as_unsigned = (argarray == NULL) -- ? (trio_uintmax_t)va_arg(*arglist, trio_ulonglong_t) -+ ? (trio_uintmax_t)va_arg(arglist, trio_ulonglong_t) - : (trio_uintmax_t)(*((trio_ulonglong_t *)argarray[num])); - else if (parameters[i].flags & FLAGS_LONG) - parameters[i].data.number.as_unsigned = (argarray == NULL) -- ? (trio_uintmax_t)va_arg(*arglist, long) -+ ? (trio_uintmax_t)va_arg(arglist, long) - : (trio_uintmax_t)(*((long *)argarray[num])); - else - { - if (argarray == NULL) -- parameters[i].data.number.as_unsigned = (trio_uintmax_t)va_arg(*arglist, int); -+ parameters[i].data.number.as_unsigned = (trio_uintmax_t)va_arg(arglist, int); - else - { - if (parameters[i].type == FORMAT_CHAR) -@@ -2062,11 +2059,11 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - */ - if (parameters[i].flags & FLAGS_USER_DEFINED) - parameters[i].data.pointer = (argarray == NULL) -- ? va_arg(*arglist, trio_pointer_t ) -+ ? va_arg(arglist, trio_pointer_t ) - : argarray[num]; - else - parameters[i].data.number.as_unsigned = (argarray == NULL) -- ? (trio_uintmax_t)va_arg(*arglist, int) -+ ? (trio_uintmax_t)va_arg(arglist, int) - : (trio_uintmax_t)(*((int *)argarray[num])); - break; - -@@ -2075,17 +2072,17 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - { - if (parameters[i].flags & FLAGS_LONGDOUBLE) - parameters[i].data.longdoublePointer = (argarray == NULL) -- ? va_arg(*arglist, trio_long_double_t *) -+ ? va_arg(arglist, trio_long_double_t *) - : (trio_long_double_t *)argarray[num]; - else - { - if (parameters[i].flags & FLAGS_LONG) - parameters[i].data.doublePointer = (argarray == NULL) -- ? va_arg(*arglist, double *) -+ ? va_arg(arglist, double *) - : (double *)argarray[num]; - else - parameters[i].data.doublePointer = (argarray == NULL) -- ? (double *)va_arg(*arglist, float *) -+ ? (double *)va_arg(arglist, float *) - : (double *)((float *)argarray[num]); - } - } -@@ -2093,13 +2090,13 @@ TRIO_ARGS5((type, format, parameters, arglist, argarra - { - if (parameters[i].flags & FLAGS_LONGDOUBLE) - parameters[i].data.longdoubleNumber = (argarray == NULL) -- ? va_arg(*arglist, trio_long_double_t) -+ ? va_arg(arglist, trio_long_double_t) - : (trio_long_double_t)(*((trio_long_double_t *)argarray[num])); - else - { - if (argarray == NULL) - parameters[i].data.longdoubleNumber = -- (trio_long_double_t)va_arg(*arglist, double); -+ (trio_long_double_t)va_arg(arglist, double); - else - { - if (parameters[i].flags & FLAGS_SHORT) -@@ -3301,7 +3298,7 @@ TrioFormatRef - TRIO_ARGS4((reference, format, arglist, argarray), - trio_reference_t *reference, - TRIO_CONST char *format, -- va_list *arglist, -+ va_list arglist, - trio_pointer_t *argarray) - { - int status; -@@ -3329,7 +3326,7 @@ TRIO_ARGS6((destination, destinationSize, OutStream, f - size_t destinationSize, - void (*OutStream) TRIO_PROTO((trio_class_t *, int)), - TRIO_CONST char *format, -- va_list *arglist, -+ va_list arglist, - trio_pointer_t *argarray) - { - int status; -@@ -3555,7 +3552,7 @@ TRIO_VARGS2((format, va_alist), - assert(VALID(format)); - - TRIO_VA_START(args, format); -- status = TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL); -+ status = TrioFormat(stdout, 0, TrioOutStreamFile, format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -3575,7 +3572,7 @@ TRIO_ARGS2((format, args), - { - assert(VALID(format)); - -- return TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL); -+ return TrioFormat(stdout, 0, TrioOutStreamFile, format, args, NULL); - } - - /** -@@ -3591,9 +3588,11 @@ TRIO_ARGS2((format, args), - TRIO_CONST char *format, - trio_pointer_t * args) - { -+ static va_list unused; -+ - assert(VALID(format)); - -- return TrioFormat(stdout, 0, TrioOutStreamFile, format, NULL, args); -+ return TrioFormat(stdout, 0, TrioOutStreamFile, format, unused, args); - } - - /************************************************************************* -@@ -3622,7 +3621,7 @@ TRIO_VARGS3((file, format, va_alist), - assert(VALID(format)); - - TRIO_VA_START(args, format); -- status = TrioFormat(file, 0, TrioOutStreamFile, format, &args, NULL); -+ status = TrioFormat(file, 0, TrioOutStreamFile, format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -3645,7 +3644,7 @@ TRIO_ARGS3((file, format, args), - assert(VALID(file)); - assert(VALID(format)); - -- return TrioFormat(file, 0, TrioOutStreamFile, format, &args, NULL); -+ return TrioFormat(file, 0, TrioOutStreamFile, format, args, NULL); - } - - /** -@@ -3663,10 +3662,12 @@ TRIO_ARGS3((file, format, args), - TRIO_CONST char *format, - trio_pointer_t * args) - { -+ static va_list unused; -+ - assert(VALID(file)); - assert(VALID(format)); - -- return TrioFormat(file, 0, TrioOutStreamFile, format, NULL, args); -+ return TrioFormat(file, 0, TrioOutStreamFile, format, unused, args); - } - - /************************************************************************* -@@ -3694,7 +3695,7 @@ TRIO_VARGS3((fd, format, va_alist), - assert(VALID(format)); - - TRIO_VA_START(args, format); -- status = TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, &args, NULL); -+ status = TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -3716,7 +3717,7 @@ TRIO_ARGS3((fd, format, args), - { - assert(VALID(format)); - -- return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, &args, NULL); -+ return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, args, NULL); - } - - /** -@@ -3734,9 +3735,11 @@ TRIO_ARGS3((fd, format, args), - TRIO_CONST char *format, - trio_pointer_t *args) - { -+ static va_list unused; -+ - assert(VALID(format)); - -- return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, NULL, args); -+ return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, unused, args); - } - - /************************************************************************* -@@ -3760,7 +3763,7 @@ TRIO_VARGS4((stream, closure, format, va_alist), - TRIO_VA_START(args, format); - data.stream.out = stream; - data.closure = closure; -- status = TrioFormat(&data, 0, TrioOutStreamCustom, format, &args, NULL); -+ status = TrioFormat(&data, 0, TrioOutStreamCustom, format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -3780,7 +3783,7 @@ TRIO_ARGS4((stream, closure, format, args), - - data.stream.out = stream; - data.closure = closure; -- return TrioFormat(&data, 0, TrioOutStreamCustom, format, &args, NULL); -+ return TrioFormat(&data, 0, TrioOutStreamCustom, format, args, NULL); - } - - TRIO_PUBLIC int -@@ -3791,6 +3794,7 @@ TRIO_ARGS4((stream, closure, format, args), - TRIO_CONST char *format, - void **args) - { -+ static va_list unused; - trio_custom_t data; - - assert(VALID(stream)); -@@ -3798,7 +3802,7 @@ TRIO_ARGS4((stream, closure, format, args), - - data.stream.out = stream; - data.closure = closure; -- return TrioFormat(&data, 0, TrioOutStreamCustom, format, NULL, args); -+ return TrioFormat(&data, 0, TrioOutStreamCustom, format, unused, args); - } - - /************************************************************************* -@@ -3827,7 +3831,7 @@ TRIO_VARGS3((buffer, format, va_alist), - assert(VALID(format)); - - TRIO_VA_START(args, format); -- status = TrioFormat(&buffer, 0, TrioOutStreamString, format, &args, NULL); -+ status = TrioFormat(&buffer, 0, TrioOutStreamString, format, args, NULL); - *buffer = NIL; /* Terminate with NIL character */ - TRIO_VA_END(args); - return status; -@@ -3853,7 +3857,7 @@ TRIO_ARGS3((buffer, format, args), - assert(VALID(buffer)); - assert(VALID(format)); - -- status = TrioFormat(&buffer, 0, TrioOutStreamString, format, &args, NULL); -+ status = TrioFormat(&buffer, 0, TrioOutStreamString, format, args, NULL); - *buffer = NIL; - return status; - } -@@ -3873,12 +3877,13 @@ TRIO_ARGS3((buffer, format, args), - TRIO_CONST char *format, - trio_pointer_t *args) - { -+ static va_list unused; - int status; - - assert(VALID(buffer)); - assert(VALID(format)); - -- status = TrioFormat(&buffer, 0, TrioOutStreamString, format, NULL, args); -+ status = TrioFormat(&buffer, 0, TrioOutStreamString, format, unused, args); - *buffer = NIL; - return status; - } -@@ -3912,7 +3917,7 @@ TRIO_VARGS4((buffer, max, format, va_alist), - - TRIO_VA_START(args, format); - status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, -- TrioOutStreamStringMax, format, &args, NULL); -+ TrioOutStreamStringMax, format, args, NULL); - if (max > 0) - *buffer = NIL; - TRIO_VA_END(args); -@@ -3942,7 +3947,7 @@ TRIO_ARGS4((buffer, max, format, args), - assert(VALID(format)); - - status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, -- TrioOutStreamStringMax, format, &args, NULL); -+ TrioOutStreamStringMax, format, args, NULL); - if (max > 0) - *buffer = NIL; - return status; -@@ -3965,13 +3970,14 @@ TRIO_ARGS4((buffer, max, format, args), - TRIO_CONST char *format, - trio_pointer_t *args) - { -+ static va_list unused; - int status; - - assert(VALID(buffer)); - assert(VALID(format)); - - status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, -- TrioOutStreamStringMax, format, NULL, args); -+ TrioOutStreamStringMax, format, unused, args); - if (max > 0) - *buffer = NIL; - return status; -@@ -4003,7 +4009,7 @@ TRIO_VARGS4((buffer, max, format, va_alist), - buffer = &buffer[buf_len]; - - status = TrioFormat(&buffer, max - 1 - buf_len, -- TrioOutStreamStringMax, format, &args, NULL); -+ TrioOutStreamStringMax, format, args, NULL); - TRIO_VA_END(args); - *buffer = NIL; - return status; -@@ -4026,7 +4032,7 @@ TRIO_ARGS4((buffer, max, format, args), - buf_len = trio_length(buffer); - buffer = &buffer[buf_len]; - status = TrioFormat(&buffer, max - 1 - buf_len, -- TrioOutStreamStringMax, format, &args, NULL); -+ TrioOutStreamStringMax, format, args, NULL); - *buffer = NIL; - return status; - } -@@ -4053,7 +4059,7 @@ TRIO_VARGS2((format, va_alist), - { - TRIO_VA_START(args, format); - (void)TrioFormat(info, 0, TrioOutStreamStringDynamic, -- format, &args, NULL); -+ format, args, NULL); - TRIO_VA_END(args); - - trio_string_terminate(info); -@@ -4079,7 +4085,7 @@ TRIO_ARGS2((format, args), - if (info) - { - (void)TrioFormat(info, 0, TrioOutStreamStringDynamic, -- format, &args, NULL); -+ format, args, NULL); - trio_string_terminate(info); - result = trio_string_extract(info); - trio_string_destroy(info); -@@ -4111,7 +4117,7 @@ TRIO_VARGS3((result, format, va_alist), - { - TRIO_VA_START(args, format); - status = TrioFormat(info, 0, TrioOutStreamStringDynamic, -- format, &args, NULL); -+ format, args, NULL); - TRIO_VA_END(args); - if (status >= 0) - { -@@ -4145,7 +4151,7 @@ TRIO_ARGS3((result, format, args), - else - { - status = TrioFormat(info, 0, TrioOutStreamStringDynamic, -- format, &args, NULL); -+ format, args, NULL); - if (status >= 0) - { - trio_string_terminate(info); -@@ -4817,7 +4823,7 @@ TRIO_VARGS3((ref, format, va_alist), - assert(VALID(format)); - - TRIO_VA_START(arglist, format); -- status = TrioFormatRef((trio_reference_t *)ref, format, &arglist, NULL); -+ status = TrioFormatRef((trio_reference_t *)ref, format, arglist, NULL); - TRIO_VA_END(arglist); - return status; - } -@@ -4834,7 +4840,7 @@ TRIO_ARGS3((ref, format, arglist), - { - assert(VALID(format)); - -- return TrioFormatRef((trio_reference_t *)ref, format, &arglist, NULL); -+ return TrioFormatRef((trio_reference_t *)ref, format, arglist, NULL); - } - - /************************************************************************* -@@ -4847,9 +4853,10 @@ TRIO_ARGS3((ref, format, argarray), - TRIO_CONST char *format, - trio_pointer_t *argarray) - { -+ static va_list unused; - assert(VALID(format)); - -- return TrioFormatRef((trio_reference_t *)ref, format, NULL, argarray); -+ return TrioFormatRef((trio_reference_t *)ref, format, unused, argarray); - } - - #endif /* TRIO_EXTENSION */ -@@ -6262,7 +6269,7 @@ TRIO_ARGS6((source, sourceSize, InStream, format, argl - size_t sourceSize, - void (*InStream) TRIO_PROTO((trio_class_t *, int *)), - TRIO_CONST char *format, -- va_list *arglist, -+ va_list arglist, - trio_pointer_t *argarray) - { - int status; -@@ -6474,7 +6481,7 @@ TRIO_VARGS2((format, va_alist), - TRIO_VA_START(args, format); - status = TrioScan((trio_pointer_t)stdin, 0, - TrioInStreamFile, -- format, &args, NULL); -+ format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -6489,7 +6496,7 @@ TRIO_ARGS2((format, args), - - return TrioScan((trio_pointer_t)stdin, 0, - TrioInStreamFile, -- format, &args, NULL); -+ format, args, NULL); - } - - TRIO_PUBLIC int -@@ -6498,11 +6505,13 @@ TRIO_ARGS2((format, args), - TRIO_CONST char *format, - trio_pointer_t *args) - { -+ static va_list unused; -+ - assert(VALID(format)); - - return TrioScan((trio_pointer_t)stdin, 0, - TrioInStreamFile, -- format, NULL, args); -+ format, unused, args); - } - - /************************************************************************* -@@ -6524,7 +6533,7 @@ TRIO_VARGS3((file, format, va_alist), - TRIO_VA_START(args, format); - status = TrioScan((trio_pointer_t)file, 0, - TrioInStreamFile, -- format, &args, NULL); -+ format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -6541,7 +6550,7 @@ TRIO_ARGS3((file, format, args), - - return TrioScan((trio_pointer_t)file, 0, - TrioInStreamFile, -- format, &args, NULL); -+ format, args, NULL); - } - - TRIO_PUBLIC int -@@ -6551,12 +6560,14 @@ TRIO_ARGS3((file, format, args), - TRIO_CONST char *format, - trio_pointer_t *args) - { -+ static va_list unused; -+ - assert(VALID(file)); - assert(VALID(format)); - - return TrioScan((trio_pointer_t)file, 0, - TrioInStreamFile, -- format, NULL, args); -+ format, unused, args); - } - - /************************************************************************* -@@ -6577,7 +6588,7 @@ TRIO_VARGS3((fd, format, va_alist), - TRIO_VA_START(args, format); - status = TrioScan((trio_pointer_t)&fd, 0, - TrioInStreamFileDescriptor, -- format, &args, NULL); -+ format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -6593,7 +6604,7 @@ TRIO_ARGS3((fd, format, args), - - return TrioScan((trio_pointer_t)&fd, 0, - TrioInStreamFileDescriptor, -- format, &args, NULL); -+ format, args, NULL); - } - - TRIO_PUBLIC int -@@ -6603,11 +6614,13 @@ TRIO_ARGS3((fd, format, args), - TRIO_CONST char *format, - trio_pointer_t *args) - { -+ static va_list unused; -+ - assert(VALID(format)); - - return TrioScan((trio_pointer_t)&fd, 0, - TrioInStreamFileDescriptor, -- format, NULL, args); -+ format, unused, args); - } - - /************************************************************************* -@@ -6631,7 +6644,7 @@ TRIO_VARGS4((stream, closure, format, va_alist), - TRIO_VA_START(args, format); - data.stream.in = stream; - data.closure = closure; -- status = TrioScan(&data, 0, TrioInStreamCustom, format, &args, NULL); -+ status = TrioScan(&data, 0, TrioInStreamCustom, format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -6651,7 +6664,7 @@ TRIO_ARGS4((stream, closure, format, args), - - data.stream.in = stream; - data.closure = closure; -- return TrioScan(&data, 0, TrioInStreamCustom, format, &args, NULL); -+ return TrioScan(&data, 0, TrioInStreamCustom, format, args, NULL); - } - - TRIO_PUBLIC int -@@ -6662,6 +6675,7 @@ TRIO_ARGS4((stream, closure, format, args), - TRIO_CONST char *format, - trio_pointer_t *args) - { -+ static va_list unused; - trio_custom_t data; - - assert(VALID(stream)); -@@ -6669,7 +6683,7 @@ TRIO_ARGS4((stream, closure, format, args), - - data.stream.in = stream; - data.closure = closure; -- return TrioScan(&data, 0, TrioInStreamCustom, format, NULL, args); -+ return TrioScan(&data, 0, TrioInStreamCustom, format, unused, args); - } - - /************************************************************************* -@@ -6691,7 +6705,7 @@ TRIO_VARGS3((buffer, format, va_alist), - TRIO_VA_START(args, format); - status = TrioScan((trio_pointer_t)&buffer, 0, - TrioInStreamString, -- format, &args, NULL); -+ format, args, NULL); - TRIO_VA_END(args); - return status; - } -@@ -6708,7 +6722,7 @@ TRIO_ARGS3((buffer, format, args), - - return TrioScan((trio_pointer_t)&buffer, 0, - TrioInStreamString, -- format, &args, NULL); -+ format, args, NULL); - } - - TRIO_PUBLIC int -@@ -6718,12 +6732,14 @@ TRIO_ARGS3((buffer, format, args), - TRIO_CONST char *format, - trio_pointer_t *args) - { -+ static va_list unused; -+ - assert(VALID(buffer)); - assert(VALID(format)); - - return TrioScan((trio_pointer_t)&buffer, 0, - TrioInStreamString, -- format, NULL, args); -+ format, unused, args); - } - - /** @} End of Scanf documentation module */ -- jca