]> granicus.if.org Git - python/commitdiff
Issue #15422: get rid of PyCFunction_New macro
authorAndrew Svetlov <andrew.svetlov@gmail.com>
Tue, 25 Dec 2012 11:32:35 +0000 (13:32 +0200)
committerAndrew Svetlov <andrew.svetlov@gmail.com>
Tue, 25 Dec 2012 11:32:35 +0000 (13:32 +0200)
Include/methodobject.h
Misc/NEWS
Modules/_threadmodule.c
Objects/descrobject.c
Objects/methodobject.c
Objects/typeobject.c
PC/python3.def
PC/python34stub.def
Python/codecs.c

index 3cc2ea9308f5e6703c8dedf34c98b319c88d204a..28781d8d1c88b0b39d46bca93675b2e53036e47c 100644 (file)
@@ -46,7 +46,7 @@ struct PyMethodDef {
 };
 typedef struct PyMethodDef PyMethodDef;
 
-#define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL)
+PyAPI_FUNC(PyObject *) PyCFunction_New(PyMethodDef *, PyObject *);
 PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, 
                                          PyObject *);
 
index 24cb17dc0d01e051b0e3d313bcc44630be4a3751..8da0d7433a4baca5aca85f771774fad21600a356 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@ What's New in Python 3.4.0 Alpha 1?
 Core and Builtins
 -----------------
 
+- Issue #15422: Get rid of PyCFunction_New macro. Use PyCFunction_NewEx
+  function (PyCFunction_New func is still present for backward compatibility).
+
 - Issue #16672: Improve performance tracing performance
 
 - Issue #14470: Remove w9xpopen support per PEP 11.
index 63efdc320733625d5bce84ab9c651dbf5d8a0030..89ef7badb84a6af36b85eb3104c09b5e117cedb8 100644 (file)
@@ -741,7 +741,7 @@ local_new(PyTypeObject *type, PyObject *args, PyObject *kw)
     wr = PyWeakref_NewRef((PyObject *) self, NULL);
     if (wr == NULL)
         goto err;
-    self->wr_callback = PyCFunction_New(&wr_callback_def, wr);
+    self->wr_callback = PyCFunction_NewEx(&wr_callback_def, wr, NULL);
     Py_DECREF(wr);
     if (self->wr_callback == NULL)
         goto err;
index abcc0020ff4acb43ec5b9c9b4cd017f7c3234c57..3cf00d52938070dd86087fed9ffcfce3391d95d5 100644 (file)
@@ -115,7 +115,7 @@ classmethod_get(PyMethodDescrObject *descr, PyObject *obj, PyObject *type)
                      ((PyTypeObject *)type)->tp_name);
         return NULL;
     }
-    return PyCFunction_New(descr->d_method, type);
+    return PyCFunction_NewEx(descr->d_method, type, NULL);
 }
 
 static PyObject *
@@ -125,7 +125,7 @@ method_get(PyMethodDescrObject *descr, PyObject *obj, PyObject *type)
 
     if (descr_check((PyDescrObject *)descr, obj, &res))
         return res;
-    return PyCFunction_New(descr->d_method, obj);
+    return PyCFunction_NewEx(descr->d_method, obj, NULL);
 }
 
 static PyObject *
@@ -239,7 +239,7 @@ methoddescr_call(PyMethodDescrObject *descr, PyObject *args, PyObject *kwds)
         return NULL;
     }
 
-    func = PyCFunction_New(descr->d_method, self);
+    func = PyCFunction_NewEx(descr->d_method, self, NULL);
     if (func == NULL)
         return NULL;
     args = PyTuple_GetSlice(args, 1, argc);
@@ -292,7 +292,7 @@ classmethoddescr_call(PyMethodDescrObject *descr, PyObject *args,
         return NULL;
     }
 
-    func = PyCFunction_New(descr->d_method, self);
+    func = PyCFunction_NewEx(descr->d_method, self, NULL);
     if (func == NULL)
         return NULL;
     args = PyTuple_GetSlice(args, 1, argc);
index 1d143f913194902e3e23e8bd6d723ceae2b7f5d1..5d9f36403424ee4a07effe1ed8d62f2b86db0782 100644 (file)
@@ -13,6 +13,12 @@ static int numfree = 0;
 #define PyCFunction_MAXFREELIST 256
 #endif
 
+PyObject *
+PyCFunction_New(PyMethodDef *ml, PyObject *self)
+{
+    return PyCFunction_NewEx(ml, self, NULL);
+}
+
 PyObject *
 PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module)
 {
@@ -346,17 +352,3 @@ _PyCFunction_DebugMallocStats(FILE *out)
                            "free PyCFunction",
                            numfree, sizeof(PyCFunction));
 }
-
-/* PyCFunction_New() is now just a macro that calls PyCFunction_NewEx(),
-   but it's part of the API so we need to keep a function around that
-   existing C extensions can call.
-*/
-
-#undef PyCFunction_New
-PyAPI_FUNC(PyObject *) PyCFunction_New(PyMethodDef *, PyObject *);
-
-PyObject *
-PyCFunction_New(PyMethodDef *ml, PyObject *self)
-{
-    return PyCFunction_NewEx(ml, self, NULL);
-}
index d0a8246cf8782c200306768a7af5a674c50067a0..f71cad3f6d9fabed58bca2788feaf7c834f860e4 100644 (file)
@@ -3811,7 +3811,7 @@ add_methods(PyTypeObject *type, PyMethodDef *meth)
             descr = PyDescr_NewClassMethod(type, meth);
         }
         else if (meth->ml_flags & METH_STATIC) {
-            PyObject *cfunc = PyCFunction_New(meth, (PyObject*)type);
+          PyObject *cfunc = PyCFunction_NewEx(meth, (PyObject*)type, NULL);
             if (cfunc == NULL)
                 return -1;
             descr = PyStaticMethod_New(cfunc);
@@ -4879,7 +4879,7 @@ add_tp_new_wrapper(PyTypeObject *type)
 
     if (_PyDict_GetItemId(type->tp_dict, &PyId___new__) != NULL)
         return 0;
-    func = PyCFunction_New(tp_new_methoddef, (PyObject *)type);
+    func = PyCFunction_NewEx(tp_new_methoddef, (PyObject *)type, NULL);
     if (func == NULL)
         return -1;
     if (_PyDict_SetItemId(type->tp_dict, &PyId___new__, func)) {
index bf8198a89d116ddf65af04fff973210f4303f1b3..0cf0d944d9fcebd1f0fabf60d4b61a8483df8784 100644 (file)
@@ -38,6 +38,7 @@ EXPORTS
   PyCFunction_GetFlags=python34.PyCFunction_GetFlags
   PyCFunction_GetFunction=python34.PyCFunction_GetFunction
   PyCFunction_GetSelf=python34.PyCFunction_GetSelf
+  PyCFunction_New=python34.PyCFunction_New
   PyCFunction_NewEx=python34.PyCFunction_NewEx
   PyCFunction_Type=python34.PyCFunction_Type DATA
   PyCallIter_New=python34.PyCallIter_New
index 3dbb05608d3efd062eb514faf56e70289f09e1be..c0f3b35fe9b029b2e6673c1a4ac658645cb6c4ae 100644 (file)
@@ -37,6 +37,7 @@ PyCFunction_ClearFreeList
 PyCFunction_GetFlags
 PyCFunction_GetFunction
 PyCFunction_GetSelf
+PyCFunction_New
 PyCFunction_NewEx
 PyCFunction_Type
 PyCallIter_New
index 37ae41b1ca43a44b4bbfd6bf95cf81e3c62f5e1d..8d9ce6f4964eaa2bf37b786b93d53464f9461f32 100644 (file)
@@ -1026,7 +1026,7 @@ static int _PyCodecRegistry_Init(void)
 
     if (interp->codec_error_registry) {
         for (i = 0; i < Py_ARRAY_LENGTH(methods); ++i) {
-            PyObject *func = PyCFunction_New(&methods[i].def, NULL);
+            PyObject *func = PyCFunction_NewEx(&methods[i].def, NULL, NULL);
             int res;
             if (!func)
                 Py_FatalError("can't initialize codec error registry");