Build Changes
=============
+* ``va_start()`` with two parameters, like ``va_start(args, format),``
+ is now required to build Python.
+ ``va_start()`` is no longer called with a single parameter.
+ (Contributed by Kumar Aditya in :gh:`93207`.)
+
C API Changes
=============
--- /dev/null
+``va_start()`` with two parameters, like ``va_start(args, format),``
+is now required to build Python. ``va_start()`` is no longer called with a single parameter.
+Patch by Kumar Aditya.
PyObject* msg;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
msg = PyUnicode_FromFormatV(format, vargs);
va_end(vargs);
const char *lib, *func, *reason;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, altmsg);
-#else
- va_start(vargs);
-#endif
if (!errcode) {
if (altmsg == NULL) {
PyErr_SetString(exc, "no reason supplied");
PyObject* ret;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
ret = PyBytes_FromFormatV(format, vargs);
va_end(vargs);
return ret;
Py_DECREF(tb);
}
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
msg_prefix = PyUnicode_FromFormatV(format, vargs);
va_end(vargs);
if (msg_prefix == NULL) {
PyObject* ret;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
ret = PyUnicode_FromFormatV(format, vargs);
va_end(vargs);
return ret;
/* Define to 1 if you have the <signal.h> header file. */
#define HAVE_SIGNAL_H 1
-/* Define if you have the <stdarg.h> prototypes. */
-#define HAVE_STDARG_PROTOTYPES
-
/* Define if you have the <stddef.h> header file. */
#define HAVE_STDDEF_H 1
syntaxerror(struct tok_state *tok, const char *format, ...)
{
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
int ret = _syntaxerror_range(tok, format, -1, -1, vargs);
va_end(vargs);
return ret;
const char *format, ...)
{
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
int ret = _syntaxerror_range(tok, format, col_offset, end_col_offset, vargs);
va_end(vargs);
return ret;
{
PyObject *errmsg;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
errmsg = PyUnicode_FromFormatV(format, vargs);
va_end(vargs);
if (!errmsg) {
int res;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
res = _PyErr_WarnFormatV(NULL, category, stack_level, format, vargs);
va_end(vargs);
return res;
int res;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
res = _PyErr_WarnFormatV(source, category, stack_level, format, vargs);
va_end(vargs);
return res;
int res;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
res = _PyErr_WarnFormatV(source, PyExc_ResourceWarning,
stack_level, format, vargs);
va_end(vargs);
goto exit;
}
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
message = PyUnicode_FromFormatV(format, vargs);
if (message != NULL) {
PyObject *res;
compiler_error(struct compiler *c, const char *format, ...)
{
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
PyObject *msg = PyUnicode_FromFormatV(format, vargs);
va_end(vargs);
if (msg == NULL) {
compiler_warn(struct compiler *c, const char *format, ...)
{
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
PyObject *msg = PyUnicode_FromFormatV(format, vargs);
va_end(vargs);
if (msg == NULL) {
const char *format, ...)
{
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
_PyErr_FormatVFromCause(tstate, exception, format, vargs);
va_end(vargs);
return NULL;
{
PyThreadState *tstate = _PyThreadState_GET();
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
_PyErr_FormatVFromCause(tstate, exception, format, vargs);
va_end(vargs);
return NULL;
const char *format, ...)
{
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
_PyErr_FormatV(tstate, exception, format, vargs);
va_end(vargs);
return NULL;
{
PyThreadState *tstate = _PyThreadState_GET();
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
_PyErr_FormatV(tstate, exception, format, vargs);
va_end(vargs);
return NULL;
stack = _PyTuple_ITEMS(args);
nargs = PyTuple_GET_SIZE(args);
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, max);
-#else
- va_start(vargs);
-#endif
retval = unpack_stack(stack, nargs, name, min, max, vargs);
va_end(vargs);
return retval;
int retval;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, max);
-#else
- va_start(vargs);
-#endif
retval = unpack_stack(args, nargs, name, min, max, vargs);
va_end(vargs);
return retval;
int ret;
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
msg = PyUnicode_FromFormatV(format, vargs);
va_end(vargs);
}
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
-#else
- va_start(vargs);
-#endif
vfprintf(stream, format, vargs);
va_end(vargs);
const char *argFormat, ...)
{
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, argFormat);
-#else
- va_start(vargs);
-#endif
int res = sys_audit_tstate(tstate, event, argFormat, vargs);
va_end(vargs);
return res;
{
PyThreadState *tstate = _PyThreadState_GET();
va_list vargs;
-#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, argFormat);
-#else
- va_start(vargs);
-#endif
int res = sys_audit_tstate(tstate, event, argFormat, vargs);
va_end(vargs);
return res;
$as_echo "#define HAVE_PROTOTYPES 1" >>confdefs.h
-fi
-
-works=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for variable length prototypes and stdarg.h" >&5
-$as_echo_n "checking for variable length prototypes and stdarg.h... " >&6; }
-if ${ac_cv_stdarg_prototypes+:} false; then :
- $as_echo_n "(cached) " >&6
-else
-
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-
-#include <stdarg.h>
-int foo(int x, ...) {
- va_list va;
- va_start(va, x);
- va_arg(va, int);
- va_arg(va, char *);
- va_arg(va, double);
- return 0;
-}
-
-int
-main ()
-{
-return foo(10, "", 3.14);
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- ac_cv_stdarg_prototypes=yes
-else
- ac_cv_stdarg_prototypes=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_stdarg_prototypes" >&5
-$as_echo "$ac_cv_stdarg_prototypes" >&6; }
-if test "x$ac_cv_stdarg_prototypes" = xyes; then :
-
-
-$as_echo "#define HAVE_STDARG_PROTOTYPES 1" >>confdefs.h
-
-
fi
dnl build with WASM debug info if either Py_DEBUG is set or the target is
dnl node-debug or browser-debug.
AS_VAR_IF([Py_DEBUG], [yes], [wasm_debug=yes], [wasm_debug=no])
-
+
dnl Start with 20 MB and allow to grow
AS_VAR_APPEND([LDFLAGS_NODIST], [" -sALLOW_MEMORY_GROWTH -sTOTAL_MEMORY=20971520"])
[Define if your compiler supports function prototype])
])
-works=no
-AC_CACHE_CHECK([for variable length prototypes and stdarg.h], [ac_cv_stdarg_prototypes], [
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#include <stdarg.h>
-int foo(int x, ...) {
- va_list va;
- va_start(va, x);
- va_arg(va, int);
- va_arg(va, char *);
- va_arg(va, double);
- return 0;
-}
-]], [[return foo(10, "", 3.14);]])],
- [ac_cv_stdarg_prototypes=yes], [ac_cv_stdarg_prototypes=no])
-])
-AS_VAR_IF([ac_cv_stdarg_prototypes], [yes], [
- AC_DEFINE(HAVE_STDARG_PROTOTYPES, 1,
- [Define if your compiler supports variable length function prototypes
- (e.g. void fprintf(FILE *, char *, ...);) *and* <stdarg.h>])
-])
-
# check for socketpair
PY_CHECK_FUNC([socketpair], [
/* Define if you have struct stat.st_mtimensec */
#undef HAVE_STAT_TV_NSEC2
-/* Define if your compiler supports variable length function prototypes (e.g.
- void fprintf(FILE *, char *, ...);) *and* <stdarg.h> */
-#undef HAVE_STDARG_PROTOTYPES
-
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H