]> granicus.if.org Git - python/commitdiff
replace usage of Py_VA_COPY with the (C99) standard va_copy
authorBenjamin Peterson <benjamin@python.org>
Wed, 21 Sep 2016 03:39:33 +0000 (20:39 -0700)
committerBenjamin Peterson <benjamin@python.org>
Wed, 21 Sep 2016 03:39:33 +0000 (20:39 -0700)
Include/pyport.h
Objects/abstract.c
Objects/unicodeobject.c
Python/getargs.c
Python/modsupport.c
configure
configure.ac
pyconfig.h.in

index ec3c4df423e7a9b8f4e597c03cb4d81f6a0701c8..20f3db748155c835edf621a00ea7ab4224916a99 100644 (file)
@@ -723,15 +723,7 @@ extern pid_t forkpty(int *, char *, struct termios *, struct winsize *);
 #define Py_ULL(x) Py_LL(x##U)
 #endif
 
-#ifdef VA_LIST_IS_ARRAY
-#define Py_VA_COPY(x, y) memcpy((x), (y), sizeof(va_list))
-#else
-#ifdef __va_copy
-#define Py_VA_COPY __va_copy
-#else
-#define Py_VA_COPY(x, y) (x) = (y)
-#endif
-#endif
+#define Py_VA_COPY va_copy
 
 /*
  * Convenient macros to deal with endianness of the platform. WORDS_BIGENDIAN is
index 36f22426ac5cffe4f22c9f2c04332dafe07937a0..c6c957b302bec2fc1246ac59822165246c421845 100644 (file)
@@ -2683,7 +2683,7 @@ objargs_mkstack(PyObject **small_stack, Py_ssize_t small_stack_size,
     PyObject **stack;
 
     /* Count the number of arguments */
-    Py_VA_COPY(countva, va);
+    va_copy(countva, va);
 
     n = 0;
     while (1) {
index 85cdbb73b7fb3d5c7a1007e1e0154ee452aede3d..f0a908386fe8c8a35175e2f5a933286c1d4d3f3c 100644 (file)
@@ -2874,9 +2874,8 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
     writer.min_length = strlen(format) + 100;
     writer.overallocate = 1;
 
-    /* va_list may be an array (of 1 item) on some platforms (ex: AMD64).
-       Copy it to be able to pass a reference to a subfunction. */
-    Py_VA_COPY(vargs2, vargs);
+    // Copy varags to be able to pass a reference to a subfunction.
+    va_copy(vargs2, vargs);
 
     for (f = format; *f; ) {
         if (*f == '%') {
index 87a5d26a88081298cb0f6e7cbfb5ca7186e6d379..cd80eda0e23585156836d6700b79baffabe24b3a 100644 (file)
@@ -142,7 +142,7 @@ PyArg_VaParse(PyObject *args, const char *format, va_list va)
 {
     va_list lva;
 
-        Py_VA_COPY(lva, va);
+    va_copy(lva, va);
 
     return vgetargs1(args, format, &lva, 0);
 }
@@ -152,7 +152,7 @@ _PyArg_VaParse_SizeT(PyObject *args, const char *format, va_list va)
 {
     va_list lva;
 
-        Py_VA_COPY(lva, va);
+    va_copy(lva, va);
 
     return vgetargs1(args, format, &lva, FLAG_SIZE_T);
 }
@@ -1402,7 +1402,7 @@ PyArg_VaParseTupleAndKeywords(PyObject *args,
         return 0;
     }
 
-        Py_VA_COPY(lva, va);
+    va_copy(lva, va);
 
     retval = vgetargskeywords(args, keywords, format, kwlist, &lva, 0);
     return retval;
@@ -1426,7 +1426,7 @@ _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args,
         return 0;
     }
 
-        Py_VA_COPY(lva, va);
+    va_copy(lva, va);
 
     retval = vgetargskeywords(args, keywords, format,
                               kwlist, &lva, FLAG_SIZE_T);
@@ -1531,7 +1531,7 @@ _PyArg_VaParseTupleAndKeywordsFast(PyObject *args, PyObject *keywords,
         return 0;
     }
 
-    Py_VA_COPY(lva, va);
+    va_copy(lva, va);
 
     retval = vgetargskeywordsfast(args, keywords, parser, &lva, 0);
     return retval;
@@ -1552,7 +1552,7 @@ _PyArg_VaParseTupleAndKeywordsFast_SizeT(PyObject *args, PyObject *keywords,
         return 0;
     }
 
-    Py_VA_COPY(lva, va);
+    va_copy(lva, va);
 
     retval = vgetargskeywordsfast(args, keywords, parser, &lva, FLAG_SIZE_T);
     return retval;
index f3aa91f2b9d0845a98f6d41deacdc8a13bd7badf..bdaf8b22c58c8f8657053a261abb6757a1312fdd 100644 (file)
@@ -468,7 +468,7 @@ va_build_value(const char *format, va_list va, int flags)
     int n = countformat(f, '\0');
     va_list lva;
 
-    Py_VA_COPY(lva, va);
+    va_copy(lva, va);
 
     if (n < 0)
         return NULL;
index 87ad9bbe1c916c45737b7f17a852f391b5acaba3..20cf0e97a0177d98e8c3123ede3f7e74b2bfc950 100755 (executable)
--- a/configure
+++ b/configure
@@ -13539,40 +13539,6 @@ $as_echo "no" >&6; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
-va_list_is_array=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether va_list is an array" >&5
-$as_echo_n "checking whether va_list is an array... " >&6; }
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#ifdef HAVE_STDARG_PROTOTYPES
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-
-int
-main ()
-{
-va_list list1, list2; list1 = list2;
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-
-else
-
-
-$as_echo "#define VA_LIST_IS_ARRAY 1" >>confdefs.h
-
- va_list_is_array=yes
-
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $va_list_is_array" >&5
-$as_echo "$va_list_is_array" >&6; }
-
 # sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
 
 
index 0a140dbe96b88bb438589e397d6218c8a72f9b37..d55d38ba677348ee29d57fae709e5da0f14098f9 100644 (file)
@@ -4038,20 +4038,6 @@ x.sa_len = 0;]])],
   [AC_MSG_RESULT(no)]
 )
 
-va_list_is_array=no
-AC_MSG_CHECKING(whether va_list is an array)
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
-#ifdef HAVE_STDARG_PROTOTYPES
-#include <stdarg.h>
-#else
-#include <varargs.h>
-#endif
-]], [[va_list list1, list2; list1 = list2;]])],[],[
- AC_DEFINE(VA_LIST_IS_ARRAY, 1, [Define if a va_list is an array of some kind])
- va_list_is_array=yes
-])
-AC_MSG_RESULT($va_list_is_array)
-
 # sigh -- gethostbyname_r is a mess; it can have 3, 5 or 6 arguments :-(
 AH_TEMPLATE(HAVE_GETHOSTBYNAME_R,
   [Define this if you have some version of gethostbyname_r()])
index 02d283f6f0f8048483127b113479930e667c6e3d..e7a836c5d42a5dc724bf667ee371f650676d8bb7 100644 (file)
 #endif
 
 
-/* Define if a va_list is an array of some kind */
-#undef VA_LIST_IS_ARRAY
-
 /* Define if you want SIGFPE handled (see Include/pyfpe.h). */
 #undef WANT_SIGFPE_HANDLER