@@ -610,7 +610,6 @@ _curses_panel_update_panels_impl(PyObject *module)
610
610
Py_RETURN_NONE ;
611
611
}
612
612
613
-
614
613
/* List of functions defined in the module */
615
614
616
615
static PyMethodDef PyCurses_methods [] = {
@@ -622,57 +621,54 @@ static PyMethodDef PyCurses_methods[] = {
622
621
};
623
622
624
623
/* Initialization function for the module */
625
-
626
-
627
- static struct PyModuleDef _curses_panelmodule = {
628
- PyModuleDef_HEAD_INIT ,
629
- "_curses_panel" ,
630
- NULL ,
631
- sizeof (_curses_panelstate ),
632
- PyCurses_methods ,
633
- NULL ,
634
- _curses_panel_traverse ,
635
- _curses_panel_clear ,
636
- _curses_panel_free
637
- };
638
-
639
- PyMODINIT_FUNC
640
- PyInit__curses_panel (void )
624
+ static int
625
+ _curses_exec (PyObject * m )
641
626
{
642
- PyObject * m , * d , * v ;
643
-
644
- /* Create the module and add the functions */
645
- m = PyModule_Create (& _curses_panelmodule );
646
- if (m == NULL )
647
- goto fail ;
648
- d = PyModule_GetDict (m );
649
-
627
+ _curses_panel_state * st = get_curses_panelstate (m );
650
628
/* Initialize object type */
651
- v = PyType_FromSpec (& PyCursesPanel_Type_spec );
652
- if (v == NULL )
653
- goto fail ;
654
- ((PyTypeObject * )v )-> tp_new = NULL ;
655
- get_curses_panelstate (m )-> PyCursesPanel_Type = v ;
629
+ st -> PyCursesPanel_Type = PyType_FromSpec (& PyCursesPanel_Type_spec );
630
+ if (st -> PyCursesPanel_Type == NULL )
631
+ return -1 ;
632
+
633
+ if (PyModule_AddType (m , st -> PyCursesPanel_Type ) < 0 )
634
+ return -1 ;
656
635
657
636
import_curses ();
658
637
if (PyErr_Occurred ())
659
- goto fail ;
638
+ return -1 ;
660
639
640
+ PyObject * d = PyModule_GetDict (m );
661
641
/* For exception _curses_panel.error */
662
- get_curses_panelstate ( m ) -> PyCursesError = PyErr_NewException ("_curses_panel.error" , NULL , NULL );
663
- PyDict_SetItemString (d , "error" , get_curses_panelstate ( m ) -> PyCursesError );
642
+ st -> PyCursesError = PyErr_NewException ("_curses_panel.error" , NULL , NULL );
643
+ PyDict_SetItemString (d , "error" , st -> PyCursesError );
664
644
665
645
/* Make the version available */
666
- v = PyUnicode_FromString (PyCursesVersion );
646
+ PyObject * v = PyUnicode_FromString (PyCursesVersion );
667
647
PyDict_SetItemString (d , "version" , v );
668
648
PyDict_SetItemString (d , "__version__" , v );
669
649
Py_DECREF (v );
670
650
671
- Py_INCREF (get_curses_panelstate (m )-> PyCursesPanel_Type );
672
- PyModule_AddObject (m , "panel" ,
673
- (PyObject * )get_curses_panelstate (m )-> PyCursesPanel_Type );
674
- return m ;
675
- fail :
676
- Py_XDECREF (m );
677
- return NULL ;
651
+ return 0 ;
678
652
}
653
+
654
+ static PyModuleDef_Slot _curses_slots [] = {
655
+ {Py_mod_exec , _curses_exec },
656
+ {0 , NULL }
657
+ };
658
+
659
+ static struct PyModuleDef _curses_panelmodule = {
660
+ PyModuleDef_HEAD_INIT ,
661
+ .m_name = "_curses_panel" ,
662
+ .m_size = sizeof (_curses_panelstate ),
663
+ .m_methods = PyCurses_methods ,
664
+ .m_slots = _curses_slots ,
665
+ .m_traverse = _curses_panel_traverse ,
666
+ .m_clear = _curses_panel_clear ,
667
+ .m_free = _curses_panel_free
668
+ };
669
+
670
+ PyMODINIT_FUNC
671
+ PyInit__curses_panel (void )
672
+ {
673
+ return PyModuleDef_Init (& _curses_panelmodule );
674
+ }
0 commit comments