]> granicus.if.org Git - python/commitdiff
Issue #2443: Added a new macro, Py_VA_COPY, which is equivalent to C99
authorAlexander Belopolsky <alexander.belopolsky@gmail.com>
Wed, 11 Aug 2010 17:31:17 +0000 (17:31 +0000)
committerAlexander Belopolsky <alexander.belopolsky@gmail.com>
Wed, 11 Aug 2010 17:31:17 +0000 (17:31 +0000)
va_copy, but available on all python platforms.  Untabified a few
unrelated files.

13 files changed:
Include/pyport.h
Misc/NEWS
Modules/_elementtree.c
Modules/_hashopenssl.c
Objects/abstract.c
Objects/bytearrayobject.c
Objects/bytesobject.c
Objects/capsule.c
Objects/memoryobject.c
Objects/unicodectype.c
Objects/unicodeobject.c
Python/getargs.c
Python/modsupport.c

index 95612851b04ff8474ae50b94b2dd5d5f68a9f719..3932dc6372296a430fa9a38b2e8c98d7aa626808 100644 (file)
@@ -822,4 +822,14 @@ 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) Py_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
+
 #endif /* Py_PYPORT_H */
index 80d07f514a8ae735de8321137138a94dd0f23899..24f9684823ff1156529087211406c884c651ed2f 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -583,6 +583,10 @@ Core and Builtins
 C-API
 -----
 
+- Issue #2443: A new macro, `Py_VA_COPY`, copies the state of the
+  variable argument list.  `Py_VA_COPY` is equivalent to C99
+  `va_copy`, but available on all python platforms.
+
 - PySlice_GetIndicesEx now clips the step to [-PY_SSIZE_T_MAX, PY_SSIZE_T_MAX]
   instead of [-PY_SSIZE_T_MAX-1, PY_SSIZE_T_MAX].  This makes it safe to do
   "step = -step" when reversing a slice.
index 2fad8e2f4758e0ad5ecc0857ab7777d95d551f6d..876ab3a769637cd775675681bc36aaea8884294e 100644 (file)
@@ -2870,15 +2870,15 @@ static PyMethodDef _functions[] = {
 
 
 static struct PyModuleDef _elementtreemodule = {
-       PyModuleDef_HEAD_INIT,
-       "_elementtree",
-       NULL,
-       -1,
-       _functions,
-       NULL,
-       NULL,
-       NULL,
-       NULL
+        PyModuleDef_HEAD_INIT,
+        "_elementtree",
+        NULL,
+        -1,
+        _functions,
+        NULL,
+        NULL,
+        NULL,
+        NULL
 };
 
 PyMODINIT_FUNC
@@ -2890,12 +2890,12 @@ PyInit__elementtree(void)
 
     /* Initialize object types */
     if (PyType_Ready(&TreeBuilder_Type) < 0)
-       return NULL;
+        return NULL;
     if (PyType_Ready(&Element_Type) < 0)
-       return NULL;
+        return NULL;
 #if defined(USE_EXPAT)
     if (PyType_Ready(&XMLParser_Type) < 0)
-       return NULL;
+        return NULL;
 #endif
 
     m = PyModule_Create(&_elementtreemodule);
@@ -2905,8 +2905,8 @@ PyInit__elementtree(void)
     /* The code below requires that the module gets already added
        to sys.modules. */
     PyDict_SetItemString(PyImport_GetModuleDict(),
-                        _elementtreemodule.m_name,
-                        m);
+                         _elementtreemodule.m_name,
+                         m);
 
     /* python glue code */
 
index 887de555d4ea202166ad4398d5fd4cf29648d5bf..9f550a6a0ddaa6fc29da7f0482d551371c1b3c55 100644 (file)
@@ -559,7 +559,7 @@ static struct PyMethodDef EVP_functions[] = {
     CONSTRUCTOR_METH_DEF(sha384),
     CONSTRUCTOR_METH_DEF(sha512),
 #endif
-    {NULL,     NULL}            /* Sentinel */
+    {NULL,      NULL}            /* Sentinel */
 };
 
 
index fa2611aec94c01c94d40ad57e578d9c24f0e4bcb..d5a5d3c12999dc1995c139b6993ffdeef1b5ab27 100644 (file)
@@ -2311,15 +2311,7 @@ objargs_mktuple(va_list va)
     va_list countva;
     PyObject *result, *tmp;
 
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(countva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(countva, va);
-#else
-    countva = va;
-#endif
-#endif
+        Py_VA_COPY(countva, va);
 
     while (((PyObject *)va_arg(countva, PyObject *)) != NULL)
         ++n;
index cdc860fc32f67b3d8a31287dee743ca3ec14dd97..be19a82766d36b9dda6bb26aab496bd3f0968c29 100644 (file)
@@ -936,12 +936,12 @@ bytearray_repr(PyByteArrayObject *self)
 static PyObject *
 bytearray_str(PyObject *op)
 {
-       if (Py_BytesWarningFlag) {
-               if (PyErr_WarnEx(PyExc_BytesWarning,
-                                "str() on a bytearray instance", 1))
-                       return NULL;
-       }
-       return bytearray_repr((PyByteArrayObject*)op);
+        if (Py_BytesWarningFlag) {
+                if (PyErr_WarnEx(PyExc_BytesWarning,
+                                 "str() on a bytearray instance", 1))
+                        return NULL;
+        }
+        return bytearray_repr((PyByteArrayObject*)op);
 }
 
 static PyObject *
@@ -1458,7 +1458,7 @@ done:
 static PyObject *
 bytearray_maketrans(PyObject *null, PyObject *args)
 {
-       return _Py_bytes_maketrans(args);
+        return _Py_bytes_maketrans(args);
 }
 
 
index c0c82f73a66f7014d5df885ae064d698484bfe05..41c86d95446bd33cad34dfbf136f4280de51ab32 100644 (file)
@@ -173,15 +173,7 @@ PyBytes_FromFormatV(const char *format, va_list vargs)
     char *s;
     PyObject* string;
 
-#ifdef VA_LIST_IS_ARRAY
-    Py_MEMCPY(count, vargs, sizeof(va_list));
-#else
-#ifdef  __va_copy
-    __va_copy(count, vargs);
-#else
-    count = vargs;
-#endif
-#endif
+    Py_VA_COPY(count, vargs);
     /* step 1: figure out how large a buffer we need */
     for (f = format; *f; f++) {
         if (*f == '%') {
index e25af6c2aa8f3b79c7b8910fbcc788efba7da7ef..acd3de637dd52e122b29a605877e0fa83b4bd285 100644 (file)
@@ -298,27 +298,27 @@ Python import mechanism to link to one another.\n\
 
 PyTypeObject PyCapsule_Type = {
     PyVarObject_HEAD_INIT(&PyType_Type, 0)
-    "PyCapsule",               /*tp_name*/
-    sizeof(PyCapsule),         /*tp_basicsize*/
-    0,                         /*tp_itemsize*/
+    "PyCapsule",                /*tp_name*/
+    sizeof(PyCapsule),          /*tp_basicsize*/
+    0,                          /*tp_itemsize*/
     /* methods */
     capsule_dealloc, /*tp_dealloc*/
-    0,                         /*tp_print*/
-    0,                         /*tp_getattr*/
-    0,                         /*tp_setattr*/
-    0,                         /*tp_reserved*/
+    0,                          /*tp_print*/
+    0,                          /*tp_getattr*/
+    0,                          /*tp_setattr*/
+    0,                          /*tp_reserved*/
     capsule_repr, /*tp_repr*/
-    0,                         /*tp_as_number*/
-    0,                         /*tp_as_sequence*/
-    0,                         /*tp_as_mapping*/
-    0,                         /*tp_hash*/
-    0,                         /*tp_call*/
-    0,                         /*tp_str*/
-    0,                         /*tp_getattro*/
-    0,                         /*tp_setattro*/
-    0,                         /*tp_as_buffer*/
-    0,                         /*tp_flags*/
-    PyCapsule_Type__doc__      /*tp_doc*/
+    0,                          /*tp_as_number*/
+    0,                          /*tp_as_sequence*/
+    0,                          /*tp_as_mapping*/
+    0,                          /*tp_hash*/
+    0,                          /*tp_call*/
+    0,                          /*tp_str*/
+    0,                          /*tp_getattro*/
+    0,                          /*tp_setattro*/
+    0,                          /*tp_as_buffer*/
+    0,                          /*tp_flags*/
+    PyCapsule_Type__doc__       /*tp_doc*/
 };
 
 
index 5b3caf272c8b0a8e3fa9c38f8c6c95b114444375..70ae6ccea0c590dc89ab571a4b836bd7ebba96e8 100644 (file)
@@ -775,10 +775,10 @@ static PyMappingMethods memory_as_mapping = {
 };
 
 static PySequenceMethods memory_as_sequence = {
-       0,                                  /* sq_length */
-       0,                                  /* sq_concat */
-       0,                                  /* sq_repeat */
-       (ssizeargfunc)memory_item,          /* sq_item */
+        0,                                  /* sq_length */
+        0,                                  /* sq_concat */
+        0,                                  /* sq_repeat */
+        (ssizeargfunc)memory_item,          /* sq_item */
 };
 
 /* Buffer methods */
index 1849831e84d50134d5acacc34c43defa870e3290..db4f513d05aa0a8f8916ed9a3c5c6450aef2308f 100644 (file)
@@ -63,10 +63,10 @@ Py_UNICODE _PyUnicode_ToTitlecase(register Py_UNICODE ch)
     int delta = ctype->title;
 
     if (ctype->flags & NODELTA_MASK)
-       return delta;
+        return delta;
 
     if (delta >= 32768)
-           delta -= 65536;
+            delta -= 65536;
 
     return ch + delta;
 }
@@ -114,7 +114,7 @@ int _PyUnicode_ToDecimalDigit(Py_UNICODE ch)
 int _PyUnicode_IsDecimalDigit(Py_UNICODE ch)
 {
     if (_PyUnicode_ToDecimalDigit(ch) < 0)
-       return 0;
+        return 0;
     return 1;
 }
 
@@ -131,7 +131,7 @@ int _PyUnicode_ToDigit(Py_UNICODE ch)
 int _PyUnicode_IsDigit(Py_UNICODE ch)
 {
     if (_PyUnicode_ToDigit(ch) < 0)
-       return 0;
+        return 0;
     return 1;
 }
 
@@ -195,9 +195,9 @@ Py_UNICODE _PyUnicode_ToUppercase(Py_UNICODE ch)
     const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
     int delta = ctype->upper;
     if (ctype->flags & NODELTA_MASK)
-       return delta;
+        return delta;
     if (delta >= 32768)
-           delta -= 65536;
+            delta -= 65536;
     return ch + delta;
 }
 
@@ -209,9 +209,9 @@ Py_UNICODE _PyUnicode_ToLowercase(Py_UNICODE ch)
     const _PyUnicode_TypeRecord *ctype = gettyperecord(ch);
     int delta = ctype->lower;
     if (ctype->flags & NODELTA_MASK)
-       return delta;
+        return delta;
     if (delta >= 32768)
-           delta -= 65536;
+            delta -= 65536;
     return ch + delta;
 }
 
index 478f9a976e15e2249d2514e8d55860d44e45801c..849f33e07604ecfb50924df5fe10c3cd0a074a0d 100644 (file)
@@ -755,15 +755,7 @@ PyUnicode_FromFormatV(const char *format, va_list vargs)
     char fmt[61]; /* should be enough for %0width.precisionlld */
     const char *copy;
 
-#ifdef VA_LIST_IS_ARRAY
-    Py_MEMCPY(count, vargs, sizeof(va_list));
-#else
-#ifdef  __va_copy
-    __va_copy(count, vargs);
-#else
-    count = vargs;
-#endif
-#endif
+    Py_VA_COPY(count, vargs); 
     /* step 1: count the number of %S/%R/%A/%s format specifications
      * (we call PyObject_Str()/PyObject_Repr()/PyObject_ASCII()/
      * PyUnicode_DecodeUTF8() for these objects once during step 3 and put the
index e4bd50d7b349a7b2d96b8d292ac54f53aef1722f..abf55ce041abfa46f1397769e46bd2986b14f273 100644 (file)
@@ -105,15 +105,7 @@ PyArg_VaParse(PyObject *args, const char *format, va_list va)
 {
     va_list lva;
 
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
+        Py_VA_COPY(lva, va);
 
     return vgetargs1(args, format, &lva, 0);
 }
@@ -123,15 +115,7 @@ _PyArg_VaParse_SizeT(PyObject *args, char *format, va_list va)
 {
     va_list lva;
 
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
+        Py_VA_COPY(lva, va);
 
     return vgetargs1(args, format, &lva, FLAG_SIZE_T);
 }
@@ -1376,15 +1360,7 @@ PyArg_VaParseTupleAndKeywords(PyObject *args,
         return 0;
     }
 
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
+        Py_VA_COPY(lva, va);
 
     retval = vgetargskeywords(args, keywords, format, kwlist, &lva, 0);
     return retval;
@@ -1408,15 +1384,7 @@ _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *args,
         return 0;
     }
 
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
+        Py_VA_COPY(lva, va);
 
     retval = vgetargskeywords(args, keywords, format,
                               kwlist, &lva, FLAG_SIZE_T);
index 5f5d842eea9aa1a13c8f85f4f2fd4c970d8ee788..85b0d6635882ff48a42e9cf6352897c9a724f63b 100644 (file)
@@ -456,15 +456,7 @@ va_build_value(const char *format, va_list va, int flags)
     int n = countformat(f, '\0');
     va_list lva;
 
-#ifdef VA_LIST_IS_ARRAY
-    memcpy(lva, va, sizeof(va_list));
-#else
-#ifdef __va_copy
-    __va_copy(lva, va);
-#else
-    lva = va;
-#endif
-#endif
+        Py_VA_COPY(lva, va);
 
     if (n < 0)
         return NULL;