@@ -76,6 +76,8 @@ typedef struct {
7676 GDBM_FILE di_dbm ;
7777} gdbmobject ;
7878
79+ #define _gdbmobject_CAST (op ) ((gdbmobject *)(op))
80+
7981#include "clinic/_gdbmmodule.c.h"
8082
8183#define check_gdbmobject_open (v , err ) \
@@ -120,27 +122,29 @@ newgdbmobject(_gdbm_state *state, const char *file, int flags, int mode)
120122
121123/* Methods */
122124static int
123- gdbm_traverse (gdbmobject * dp , visitproc visit , void * arg )
125+ gdbm_traverse (PyObject * op , visitproc visit , void * arg )
124126{
125- Py_VISIT (Py_TYPE (dp ));
127+ Py_VISIT (Py_TYPE (op ));
126128 return 0 ;
127129}
128130
129131static void
130- gdbm_dealloc (gdbmobject * dp )
132+ gdbm_dealloc (PyObject * op )
131133{
134+ gdbmobject * dp = _gdbmobject_CAST (op );
135+ PyTypeObject * tp = Py_TYPE (dp );
132136 PyObject_GC_UnTrack (dp );
133137 if (dp -> di_dbm ) {
134138 gdbm_close (dp -> di_dbm );
135139 }
136- PyTypeObject * tp = Py_TYPE (dp );
137140 tp -> tp_free (dp );
138141 Py_DECREF (tp );
139142}
140143
141144static Py_ssize_t
142- gdbm_length (gdbmobject * dp )
145+ gdbm_length (PyObject * op )
143146{
147+ gdbmobject * dp = _gdbmobject_CAST (op );
144148 _gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
145149 if (dp -> di_dbm == NULL ) {
146150 PyErr_SetString (state -> gdbm_error , "GDBM object has already been closed" );
@@ -185,8 +189,9 @@ gdbm_length(gdbmobject *dp)
185189}
186190
187191static int
188- gdbm_bool (gdbmobject * dp )
192+ gdbm_bool (PyObject * op )
189193{
194+ gdbmobject * dp = _gdbmobject_CAST (op );
190195 _gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
191196 if (dp -> di_dbm == NULL ) {
192197 PyErr_SetString (state -> gdbm_error , "GDBM object has already been closed" );
@@ -235,10 +240,11 @@ parse_datum(PyObject *o, datum *d, const char *failmsg)
235240}
236241
237242static PyObject *
238- gdbm_subscript (gdbmobject * dp , PyObject * key )
243+ gdbm_subscript (PyObject * op , PyObject * key )
239244{
240245 PyObject * v ;
241246 datum drec , krec ;
247+ gdbmobject * dp = _gdbmobject_CAST (op );
242248 _gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
243249
244250 if (!parse_datum (key , & krec , NULL )) {
@@ -275,7 +281,7 @@ _gdbm_gdbm_get_impl(gdbmobject *self, PyObject *key, PyObject *default_value)
275281{
276282 PyObject * res ;
277283
278- res = gdbm_subscript (self , key );
284+ res = gdbm_subscript (( PyObject * ) self , key );
279285 if (res == NULL && PyErr_ExceptionMatches (PyExc_KeyError )) {
280286 PyErr_Clear ();
281287 return Py_NewRef (default_value );
@@ -284,10 +290,11 @@ _gdbm_gdbm_get_impl(gdbmobject *self, PyObject *key, PyObject *default_value)
284290}
285291
286292static int
287- gdbm_ass_sub (gdbmobject * dp , PyObject * v , PyObject * w )
293+ gdbm_ass_sub (PyObject * op , PyObject * v , PyObject * w )
288294{
289295 datum krec , drec ;
290296 const char * failmsg = "gdbm mappings have bytes or string indices only" ;
297+ gdbmobject * dp = _gdbmobject_CAST (op );
291298 _gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
292299
293300 if (!parse_datum (v , & krec , failmsg )) {
@@ -345,12 +352,12 @@ _gdbm_gdbm_setdefault_impl(gdbmobject *self, PyObject *key,
345352{
346353 PyObject * res ;
347354
348- res = gdbm_subscript (self , key );
355+ res = gdbm_subscript (( PyObject * ) self , key );
349356 if (res == NULL && PyErr_ExceptionMatches (PyExc_KeyError )) {
350357 PyErr_Clear ();
351- if (gdbm_ass_sub (self , key , default_value ) < 0 )
358+ if (gdbm_ass_sub (( PyObject * ) self , key , default_value ) < 0 )
352359 return NULL ;
353- return gdbm_subscript (self , key );
360+ return gdbm_subscript (( PyObject * ) self , key );
354361 }
355362 return res ;
356363}
@@ -841,7 +848,7 @@ _gdbm_module_clear(PyObject *module)
841848static void
842849_gdbm_module_free (void * module )
843850{
844- _gdbm_module_clear ((PyObject * )module );
851+ ( void ) _gdbm_module_clear ((PyObject * )module );
845852}
846853
847854static PyModuleDef_Slot _gdbm_module_slots [] = {
0 commit comments