@@ -326,20 +326,20 @@ _multidict_extend(MultiDictObject *self, PyObject *args, PyObject *kwds,
326326}
327327
328328static inline PyObject *
329- _multidict_copy (MultiDictObject * self , PyTypeObject * multidict_tp_object )
329+ multidict_copy (MultiDictObject * self )
330330{
331331 MultiDictObject * new_multidict = NULL ;
332332
333333 PyObject * arg_items = NULL ,
334334 * items = NULL ;
335335
336336 new_multidict = (MultiDictObject * )PyType_GenericNew (
337- multidict_tp_object , NULL , NULL );
337+ Py_TYPE ( self ) , NULL , NULL );
338338 if (new_multidict == NULL ) {
339339 return NULL ;
340340 }
341341
342- if (multidict_tp_object -> tp_init (
342+ if (Py_TYPE ( self ) -> tp_init (
343343 (PyObject * )new_multidict , NULL , NULL ) < 0 )
344344 {
345345 return NULL ;
@@ -782,12 +782,6 @@ multidict_add(
782782 Py_RETURN_NONE ;
783783}
784784
785- static inline PyObject *
786- multidict_copy (MultiDictObject * self )
787- {
788- return _multidict_copy (self , & multidict_type );
789- }
790-
791785static inline PyObject *
792786multidict_extend (MultiDictObject * self , PyObject * args , PyObject * kwds )
793787{
@@ -1163,27 +1157,6 @@ cimultidict_tp_init(MultiDictObject *self, PyObject *args, PyObject *kwds)
11631157 return 0 ;
11641158}
11651159
1166- static inline PyObject *
1167- cimultidict_copy (MultiDictObject * self )
1168- {
1169- return _multidict_copy (self , & cimultidict_type );
1170- }
1171-
1172- PyDoc_STRVAR (cimultidict_copy_doc ,
1173- "Return a copy of itself." );
1174-
1175- static PyMethodDef cimultidict_methods [] = {
1176- {
1177- "copy" ,
1178- (PyCFunction )cimultidict_copy ,
1179- METH_NOARGS ,
1180- cimultidict_copy_doc
1181- },
1182- {
1183- NULL ,
1184- NULL
1185- } /* sentinel */
1186- };
11871160
11881161PyDoc_STRVAR (CIMultDict_doc ,
11891162"Dictionary with the support for duplicate case-insensitive keys." );
@@ -1199,7 +1172,6 @@ static PyTypeObject cimultidict_type = {
11991172 .tp_traverse = (traverseproc )multidict_tp_traverse ,
12001173 .tp_clear = (inquiry )multidict_tp_clear ,
12011174 .tp_weaklistoffset = offsetof(MultiDictObject , weaklist ),
1202- .tp_methods = cimultidict_methods ,
12031175 .tp_base = & multidict_type ,
12041176 .tp_init = (initproc )cimultidict_tp_init ,
12051177 .tp_alloc = PyType_GenericAlloc ,
@@ -1607,18 +1579,15 @@ static inline void
16071579module_free (void * m )
16081580{
16091581 Py_CLEAR (multidict_str_lower );
1582+ Py_CLEAR (viewbaseset_and_func );
1583+ Py_CLEAR (viewbaseset_or_func );
1584+ Py_CLEAR (viewbaseset_sub_func );
1585+ Py_CLEAR (viewbaseset_xor_func );
16101586}
16111587
16121588static PyMethodDef multidict_module_methods [] = {
1613- {
1614- "getversion" ,
1615- (PyCFunction )getversion ,
1616- METH_O
1617- },
1618- {
1619- NULL ,
1620- NULL
1621- } /* sentinel */
1589+ {"getversion" , (PyCFunction )getversion , METH_O },
1590+ {NULL , NULL } /* sentinel */
16221591};
16231592
16241593static PyModuleDef multidict_module = {
@@ -1659,21 +1628,6 @@ PyInit__multidict(void)
16591628 goto fail ;
16601629 }
16611630
1662- #define WITH_MOD (NAME ) \
1663- Py_CLEAR(module); \
1664- module = PyImport_ImportModule(NAME); \
1665- if (module == NULL) { \
1666- goto fail; \
1667- }
1668-
1669- #define GET_MOD_ATTR (VAR , NAME ) \
1670- VAR = PyObject_GetAttrString(module, NAME); \
1671- if (VAR == NULL) { \
1672- goto fail; \
1673- }
1674-
1675- Py_CLEAR (module ); \
1676-
16771631 /* Instantiate this module */
16781632 module = PyModule_Create (& multidict_module );
16791633 if (module == NULL ) {
@@ -1746,7 +1700,4 @@ PyInit__multidict(void)
17461700 Py_XDECREF (multidict_str_lower );
17471701
17481702 return NULL ;
1749-
1750- #undef WITH_MOD
1751- #undef GET_MOD_ATTR
17521703}
0 commit comments