Skip to content

Commit 441a0be

Browse files
committed
fix compilation errors
1 parent 753ba2a commit 441a0be

File tree

4 files changed

+31
-32
lines changed

4 files changed

+31
-32
lines changed

Modules/_ctypes/_ctypes.c

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -168,13 +168,12 @@ _DictRemover_clear(PyObject *myself)
168168
}
169169

170170
static void
171-
_DictRemover_dealloc(PyObject *myself)
171+
_DictRemover_dealloc(PyObject *self)
172172
{
173-
PyTypeObject *tp = Py_TYPE(myself);
174-
DictRemoverObject *self = _DictRemoverObject_CAST(myself);
175-
PyObject_GC_UnTrack(myself);
173+
PyTypeObject *tp = Py_TYPE(self);
174+
PyObject_GC_UnTrack(self);
176175
(void)_DictRemover_clear(self);
177-
tp->tp_free(myself);
176+
tp->tp_free(self);
178177
Py_DECREF(tp);
179178
}
180179

@@ -416,22 +415,21 @@ StructParam_traverse(PyObject *self, visitproc visit, void *arg)
416415
}
417416

418417
static int
419-
StructParam_clear(PyObject *op)
418+
StructParam_clear(PyObject *myself)
420419
{
421-
StructParamObject *self = _StructParamObject_CAST(op);
420+
StructParamObject *self = _StructParamObject_CAST(myself);
422421
Py_CLEAR(self->keep);
423422
return 0;
424423
}
425424

426425
static void
427-
StructParam_dealloc(PyObject *myself)
426+
StructParam_dealloc(PyObject *self)
428427
{
429-
StructParamObject *self = _StructParamObject_CAST(myself);
430428
PyTypeObject *tp = Py_TYPE(self);
431-
PyObject_GC_UnTrack(myself);
429+
PyObject_GC_UnTrack(self);
432430
(void)StructParam_clear(self);
433-
PyMem_Free(self->ptr);
434-
tp->tp_free(myself);
431+
PyMem_Free(_StructParamObject_CAST(self)->ptr);
432+
tp->tp_free(self);
435433
Py_DECREF(tp);
436434
}
437435

@@ -1417,8 +1415,6 @@ static PyType_Spec pycpointer_type_spec = {
14171415
attribute, and a _type_ attribute.
14181416
*/
14191417

1420-
#define _CDataObject_CAST(op) ((CDataObject *)(op))
1421-
14221418
static int
14231419
CharArray_set_raw(PyObject *op, PyObject *value, void *Py_UNUSED(ignored))
14241420
{
@@ -3262,10 +3258,7 @@ PyObject *
32623258
PyCData_get(ctypes_state *st, PyObject *type, GETFUNC getfunc, PyObject *src,
32633259
Py_ssize_t index, Py_ssize_t size, char *adr)
32643260
{
3265-
#ifdef Py_GIL_DISABLED
3266-
// This isn't used if the GIL is enabled, so it causes a compiler warning.
3267-
CDataObject *cdata = (CDataObject *)src;
3268-
#endif
3261+
CDataObject *cdata = _CDataObject_CAST(src);
32693262
if (getfunc) {
32703263
PyObject *res;
32713264
LOCK_PTR(cdata);
@@ -3490,8 +3483,6 @@ generic_pycdata_new(ctypes_state *st,
34903483
PyCFuncPtr_Type
34913484
*/
34923485

3493-
#define _PyCFuncPtrObject_CAST(op) ((PyCFuncPtrObject *)(op))
3494-
34953486
/*[clinic input]
34963487
@critical_section
34973488
@setter
@@ -4585,7 +4576,7 @@ PyCFuncPtr_clear(PyObject *op)
45854576
Py_CLEAR(self->converters);
45864577
Py_CLEAR(self->paramflags);
45874578
Py_CLEAR(self->thunk);
4588-
return PyCData_clear(self);
4579+
return PyCData_clear(op);
45894580
}
45904581

45914582
static void
@@ -5525,6 +5516,7 @@ Pointer_new(PyTypeObject *type, PyObject *args, PyObject *kw)
55255516
static PyObject *
55265517
Pointer_subscript(PyObject *myself, PyObject *item)
55275518
{
5519+
CDataObject *self = _CDataObject_CAST(myself);
55285520
if (PyIndex_Check(item)) {
55295521
Py_ssize_t i = PyNumber_AsSsize_t(item, PyExc_IndexError);
55305522
if (i == -1 && PyErr_Occurred())
@@ -5602,7 +5594,7 @@ Pointer_subscript(PyObject *myself, PyObject *item)
56025594
}
56035595
assert(iteminfo);
56045596
if (iteminfo->getfunc == _ctypes_get_fielddesc("c")->getfunc) {
5605-
char *ptr = locked_deref(_CDataObject_CAST(myself));
5597+
char *ptr = locked_deref(self);
56065598
char *dest;
56075599

56085600
if (len <= 0)
@@ -5628,7 +5620,7 @@ Pointer_subscript(PyObject *myself, PyObject *item)
56285620
return np;
56295621
}
56305622
if (iteminfo->getfunc == _ctypes_get_fielddesc("u")->getfunc) {
5631-
wchar_t *ptr = locked_deref(_CDataObject_CAST(myself));
5623+
wchar_t *ptr = locked_deref(self);
56325624
wchar_t *dest;
56335625

56345626
if (len <= 0)

Modules/_ctypes/callproc.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -477,8 +477,6 @@ check_hresult(PyObject *self, PyObject *args)
477477

478478
/**************************************************************/
479479

480-
#define _PyCArgObject_CAST(op) ((PyCArgObject *)(op))
481-
482480
PyCArgObject *
483481
PyCArgObject_new(ctypes_state *st)
484482
{
@@ -528,7 +526,7 @@ is_literal_char(unsigned char c)
528526
}
529527

530528
static PyObject *
531-
PyCArg_repr(PyObject *self)
529+
PyCArg_repr(PyObject *op)
532530
{
533531
PyCArgObject *self = _PyCArgObject_CAST(op);
534532
switch(self->tag) {

Modules/_ctypes/cfield.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,6 @@ static void pymem_destructor(PyObject *ptr)
4242
PyCField_Type
4343
*/
4444

45-
#define _CFieldObject_CAST(op) ((CFieldObject *)(op))
46-
4745
/*[clinic input]
4846
class _ctypes.CField "PyObject *" "PyObject"
4947
[clinic start generated code]*/
@@ -208,7 +206,7 @@ PyCField_set(PyObject *op, PyObject *inst, PyObject *value)
208206
"not a ctype instance");
209207
return -1;
210208
}
211-
dst = _CFieldObject_CAST(inst);
209+
dst = _CDataObject_CAST(inst);
212210
ptr = dst->b_ptr + self->offset;
213211
if (value == NULL) {
214212
PyErr_SetString(PyExc_TypeError,
@@ -233,7 +231,7 @@ PyCField_get(PyObject *op, PyObject *inst, PyTypeObject *type)
233231
"not a ctype instance");
234232
return NULL;
235233
}
236-
src = _CFieldObject_CAST(inst);
234+
src = _CDataObject_CAST(inst);
237235
return PyCData_get(st, self->proto, self->getfunc, inst,
238236
self->index, self->size, src->b_ptr + self->offset);
239237
}

Modules/_ctypes/ctypes.h

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,10 @@ extern PyType_Spec cfield_spec;
112112
extern PyType_Spec cthunk_spec;
113113

114114
typedef struct tagPyCArgObject PyCArgObject;
115+
#define _PyCArgObject_CAST(op) ((PyCArgObject *)(op))
116+
115117
typedef struct tagCDataObject CDataObject;
118+
#define _CDataObject_CAST(op) ((CDataObject *)(op))
116119

117120
// GETFUNC: convert the C value at *ptr* to Python object, return the object
118121
// SETFUNC: write content of the PyObject *value* to the location at *ptr*;
@@ -176,6 +179,7 @@ typedef struct {
176179
ffi_type *ffi_restype;
177180
ffi_type *atypes[1];
178181
} CThunkObject;
182+
#define _CThunkObject_CAST(op) ((CThunkObject *)(op))
179183
#define CThunk_CheckExact(st, v) Py_IS_TYPE(v, st->PyCThunk_Type)
180184

181185
typedef struct {
@@ -208,6 +212,7 @@ typedef struct {
208212
#endif
209213
PyObject *paramflags;
210214
} PyCFuncPtrObject;
215+
#define _PyCFuncPtrObject_CAST(op) ((PyCFuncPtrObject *)(op))
211216

212217
extern int PyCStructUnionType_update_stginfo(PyObject *fields, PyObject *type, int isStruct);
213218
extern int PyType_stginfo(PyTypeObject *self, Py_ssize_t *psize, Py_ssize_t *palign, Py_ssize_t *plength);
@@ -268,6 +273,7 @@ typedef struct CFieldObject {
268273

269274
PyObject *name; /* exact PyUnicode */
270275
} CFieldObject;
276+
#define _CFieldObject_CAST(op) ((CFieldObject *)(op))
271277

272278
/****************************************************************
273279
StgInfo
@@ -404,6 +410,7 @@ struct tagPyCArgObject {
404410
PyObject *obj;
405411
Py_ssize_t size; /* for the 'V' tag */
406412
};
413+
#define _PyCArgObject_CAST(op) ((PyCArgObject *)(op))
407414

408415
#define PyCArg_CheckExact(st, v) Py_IS_TYPE(v, st->PyCArg_Type)
409416
extern PyCArgObject *PyCArgObject_new(ctypes_state *st);
@@ -550,8 +557,12 @@ PyStgInfo_Init(ctypes_state *state, PyTypeObject *type)
550557
# define LOCK_PTR(self) Py_BEGIN_CRITICAL_SECTION(self)
551558
# define UNLOCK_PTR(self) Py_END_CRITICAL_SECTION()
552559
#else
553-
# define LOCK_PTR(self)
554-
# define UNLOCK_PTR(self)
560+
/*
561+
* Dummy functions instead of macros so that 'self' can be
562+
* unused in the caller without triggering a compiler warning.
563+
*/
564+
static inline void LOCK_PTR(CDataObject *Py_UNUSED(self)) {}
565+
static inline void UNLOCK_PTR(CDataObject *Py_UNUSED(self)) {}
555566
#endif
556567

557568
static inline void

0 commit comments

Comments
 (0)