Björn Ketelaars: > Diff below unbreaks building mail/hypermail with llvm22. While here > change HOMEPAGE to https.
> +- status = TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL); > ++ status = TrioFormat(stdout, 0, TrioOutStreamFile, format, (va_list > *)args, NULL); That can't be right. You are losing a level of indirection here. When it still was a warning, the compiler effectively performed (va_list *)&args. You may notice that the other functions that allocate a variable va_list args and take its address compile just fine. Apparently a va_list parameter isn't exactly the same thing as a va_list variable, but it must be possible to va_copy() a parameter to a variable, so I propose the diff below. (After I came up with that, I also found this https://codeberg.org/OpenBSD/ports/commit/8ebf96e567248e85e4fe9eaba91ccc6f55809396 ) --- mail/hypermail/Makefile +++ mail/hypermail/Makefile @@ -3,8 +3,9 @@ COMMENT= generate a cross-referenced HTML mail archiv VERSION= 2.3.0 DISTNAME= hypermail-${VERSION} CATEGORIES= mail www +REVISION= 0 -HOMEPAGE= http://www.hypermail-project.org/ +HOMEPAGE= https://www.hypermail-project.org/ SITES= ${HOMEPAGE} WRKDIST= ${WRKDIR}/hypermail commit - 6b40a864ff5cd7eb048177f2aa76c5686415ede4 blob - /dev/null file + mail/hypermail/patches/patch-src_trio_c (mode 644) --- /dev/null +++ mail/hypermail/patches/patch-src_trio_c @@ -0,0 +1,253 @@ +Index: src/trio.c +--- src/trio.c.orig ++++ src/trio.c +@@ -3571,10 +3571,13 @@ TRIO_PUBLIC int + trio_vprintf + TRIO_ARGS2((format, args), + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { ++ va_list args; ++ + assert(VALID(format)); + ++ va_copy(args, arglist); + return TrioFormat(stdout, 0, TrioOutStreamFile, format, &args, NULL); + } + +@@ -3640,11 +3643,14 @@ trio_vfprintf + TRIO_ARGS3((file, format, args), + FILE *file, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { ++ va_list args; ++ + assert(VALID(file)); + assert(VALID(format)); + ++ va_copy(args, arglist); + return TrioFormat(file, 0, TrioOutStreamFile, format, &args, NULL); + } + +@@ -3712,10 +3718,13 @@ trio_vdprintf + TRIO_ARGS3((fd, format, args), + int fd, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { ++ va_list args; ++ + assert(VALID(format)); + ++ va_copy(args, arglist); + return TrioFormat(&fd, 0, TrioOutStreamFileDescriptor, format, &args, NULL); + } + +@@ -3771,15 +3780,17 @@ TRIO_ARGS4((stream, closure, format, args), + trio_outstream_t stream, + trio_pointer_t closure, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { + trio_custom_t data; ++ va_list args; + + assert(VALID(stream)); + assert(VALID(format)); + + data.stream.out = stream; + data.closure = closure; ++ va_copy(args, arglist); + return TrioFormat(&data, 0, TrioOutStreamCustom, format, &args, NULL); + } + +@@ -3846,13 +3857,15 @@ trio_vsprintf + TRIO_ARGS3((buffer, format, args), + char *buffer, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { + int status; ++ va_list args; + + assert(VALID(buffer)); + assert(VALID(format)); + ++ va_copy(args, arglist); + status = TrioFormat(&buffer, 0, TrioOutStreamString, format, &args, NULL); + *buffer = NIL; + return status; +@@ -3934,13 +3947,15 @@ TRIO_ARGS4((buffer, max, format, args), + char *buffer, + size_t max, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { + int status; ++ va_list args; + + assert(VALID(buffer)); + assert(VALID(format)); + ++ va_copy(args, arglist); + status = TrioFormat(&buffer, max > 0 ? max - 1 : 0, + TrioOutStreamStringMax, format, &args, NULL); + if (max > 0) +@@ -4015,16 +4030,18 @@ TRIO_ARGS4((buffer, max, format, args), + char *buffer, + size_t max, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { + int status; + size_t buf_len; ++ va_list args; + + assert(VALID(buffer)); + assert(VALID(format)); + + buf_len = trio_length(buffer); + buffer = &buffer[buf_len]; ++ va_copy(args, arglist); + status = TrioFormat(&buffer, max - 1 - buf_len, + TrioOutStreamStringMax, format, &args, NULL); + *buffer = NIL; +@@ -4068,13 +4085,15 @@ TRIO_PUBLIC char * + trio_vaprintf + TRIO_ARGS2((format, args), + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { + trio_string_t *info; + char *result = NULL; ++ va_list args; + + assert(VALID(format)); + ++ va_copy(args, arglist); + info = trio_xstring_duplicate(""); + if (info) + { +@@ -4128,7 +4147,7 @@ trio_vasprintf + TRIO_ARGS3((result, format, args), + char **result, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { + int status; + trio_string_t *info; +@@ -4144,6 +4163,9 @@ TRIO_ARGS3((result, format, args), + } + else + { ++ va_list args; ++ ++ va_copy(args, arglist); + status = TrioFormat(info, 0, TrioOutStreamStringDynamic, + format, &args, NULL); + if (status >= 0) +@@ -4832,9 +4854,12 @@ TRIO_ARGS3((ref, format, arglist), + TRIO_CONST char *format, + va_list arglist) + { ++ va_list args; ++ + assert(VALID(format)); + +- return TrioFormatRef((trio_reference_t *)ref, format, &arglist, NULL); ++ va_copy(args, arglist); ++ return TrioFormatRef((trio_reference_t *)ref, format, &args, NULL); + } + + /************************************************************************* +@@ -6483,10 +6508,13 @@ TRIO_PUBLIC int + trio_vscanf + TRIO_ARGS2((format, args), + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { ++ va_list args; ++ + assert(VALID(format)); + ++ va_copy(args, arglist); + return TrioScan((trio_pointer_t)stdin, 0, + TrioInStreamFile, + format, &args, NULL); +@@ -6534,11 +6562,14 @@ trio_vfscanf + TRIO_ARGS3((file, format, args), + FILE *file, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { ++ va_list args; ++ + assert(VALID(file)); + assert(VALID(format)); + ++ va_copy(args, arglist); + return TrioScan((trio_pointer_t)file, 0, + TrioInStreamFile, + format, &args, NULL); +@@ -6587,10 +6618,13 @@ trio_vdscanf + TRIO_ARGS3((fd, format, args), + int fd, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { ++ va_list args; ++ + assert(VALID(format)); + ++ va_copy(args, arglist); + return TrioScan((trio_pointer_t)&fd, 0, + TrioInStreamFileDescriptor, + format, &args, NULL); +@@ -6642,15 +6676,17 @@ TRIO_ARGS4((stream, closure, format, args), + trio_instream_t stream, + trio_pointer_t closure, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { + trio_custom_t data; ++ va_list args; + + assert(VALID(stream)); + assert(VALID(format)); + + data.stream.in = stream; + data.closure = closure; ++ va_copy(args, arglist); + return TrioScan(&data, 0, TrioInStreamCustom, format, &args, NULL); + } + +@@ -6701,11 +6737,14 @@ trio_vsscanf + TRIO_ARGS3((buffer, format, args), + TRIO_CONST char *buffer, + TRIO_CONST char *format, +- va_list args) ++ va_list arglist) + { ++ va_list args; ++ + assert(VALID(buffer)); + assert(VALID(format)); + ++ va_copy(args, arglist); + return TrioScan((trio_pointer_t)&buffer, 0, + TrioInStreamString, + format, &args, NULL); -- Christian "naddy" Weisgerber [email protected]
