@@ -76,6 +76,8 @@ typedef struct {
76
76
GDBM_FILE di_dbm ;
77
77
} gdbmobject ;
78
78
79
+ #define _gdbmobject_CAST (op ) ((gdbmobject *)(op))
80
+
79
81
#include "clinic/_gdbmmodule.c.h"
80
82
81
83
#define check_gdbmobject_open (v , err ) \
@@ -120,27 +122,29 @@ newgdbmobject(_gdbm_state *state, const char *file, int flags, int mode)
120
122
121
123
/* Methods */
122
124
static int
123
- gdbm_traverse (gdbmobject * dp , visitproc visit , void * arg )
125
+ gdbm_traverse (PyObject * op , visitproc visit , void * arg )
124
126
{
125
- Py_VISIT (Py_TYPE (dp ));
127
+ Py_VISIT (Py_TYPE (op ));
126
128
return 0 ;
127
129
}
128
130
129
131
static void
130
- gdbm_dealloc (gdbmobject * dp )
132
+ gdbm_dealloc (PyObject * op )
131
133
{
134
+ gdbmobject * dp = _gdbmobject_CAST (op );
135
+ PyTypeObject * tp = Py_TYPE (dp );
132
136
PyObject_GC_UnTrack (dp );
133
137
if (dp -> di_dbm ) {
134
138
gdbm_close (dp -> di_dbm );
135
139
}
136
- PyTypeObject * tp = Py_TYPE (dp );
137
140
tp -> tp_free (dp );
138
141
Py_DECREF (tp );
139
142
}
140
143
141
144
static Py_ssize_t
142
- gdbm_length (gdbmobject * dp )
145
+ gdbm_length (PyObject * op )
143
146
{
147
+ gdbmobject * dp = _gdbmobject_CAST (op );
144
148
_gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
145
149
if (dp -> di_dbm == NULL ) {
146
150
PyErr_SetString (state -> gdbm_error , "GDBM object has already been closed" );
@@ -185,8 +189,9 @@ gdbm_length(gdbmobject *dp)
185
189
}
186
190
187
191
static int
188
- gdbm_bool (gdbmobject * dp )
192
+ gdbm_bool (PyObject * op )
189
193
{
194
+ gdbmobject * dp = _gdbmobject_CAST (op );
190
195
_gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
191
196
if (dp -> di_dbm == NULL ) {
192
197
PyErr_SetString (state -> gdbm_error , "GDBM object has already been closed" );
@@ -235,10 +240,11 @@ parse_datum(PyObject *o, datum *d, const char *failmsg)
235
240
}
236
241
237
242
static PyObject *
238
- gdbm_subscript (gdbmobject * dp , PyObject * key )
243
+ gdbm_subscript (PyObject * op , PyObject * key )
239
244
{
240
245
PyObject * v ;
241
246
datum drec , krec ;
247
+ gdbmobject * dp = _gdbmobject_CAST (op );
242
248
_gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
243
249
244
250
if (!parse_datum (key , & krec , NULL )) {
@@ -275,7 +281,7 @@ _gdbm_gdbm_get_impl(gdbmobject *self, PyObject *key, PyObject *default_value)
275
281
{
276
282
PyObject * res ;
277
283
278
- res = gdbm_subscript (self , key );
284
+ res = gdbm_subscript (( PyObject * ) self , key );
279
285
if (res == NULL && PyErr_ExceptionMatches (PyExc_KeyError )) {
280
286
PyErr_Clear ();
281
287
return Py_NewRef (default_value );
@@ -284,10 +290,11 @@ _gdbm_gdbm_get_impl(gdbmobject *self, PyObject *key, PyObject *default_value)
284
290
}
285
291
286
292
static int
287
- gdbm_ass_sub (gdbmobject * dp , PyObject * v , PyObject * w )
293
+ gdbm_ass_sub (PyObject * op , PyObject * v , PyObject * w )
288
294
{
289
295
datum krec , drec ;
290
296
const char * failmsg = "gdbm mappings have bytes or string indices only" ;
297
+ gdbmobject * dp = _gdbmobject_CAST (op );
291
298
_gdbm_state * state = PyType_GetModuleState (Py_TYPE (dp ));
292
299
293
300
if (!parse_datum (v , & krec , failmsg )) {
@@ -345,12 +352,12 @@ _gdbm_gdbm_setdefault_impl(gdbmobject *self, PyObject *key,
345
352
{
346
353
PyObject * res ;
347
354
348
- res = gdbm_subscript (self , key );
355
+ res = gdbm_subscript (( PyObject * ) self , key );
349
356
if (res == NULL && PyErr_ExceptionMatches (PyExc_KeyError )) {
350
357
PyErr_Clear ();
351
- if (gdbm_ass_sub (self , key , default_value ) < 0 )
358
+ if (gdbm_ass_sub (( PyObject * ) self , key , default_value ) < 0 )
352
359
return NULL ;
353
- return gdbm_subscript (self , key );
360
+ return gdbm_subscript (( PyObject * ) self , key );
354
361
}
355
362
return res ;
356
363
}
@@ -841,7 +848,7 @@ _gdbm_module_clear(PyObject *module)
841
848
static void
842
849
_gdbm_module_free (void * module )
843
850
{
844
- _gdbm_module_clear ((PyObject * )module );
851
+ ( void ) _gdbm_module_clear ((PyObject * )module );
845
852
}
846
853
847
854
static PyModuleDef_Slot _gdbm_module_slots [] = {
0 commit comments