@@ -334,13 +334,13 @@ partial_descr_get(PyObject *self, PyObject *obj, PyObject *type)
334
334
return PyMethod_New (self , obj );
335
335
}
336
336
337
- #define ALLOCATE_STACK (type , size , small_stack , stack ) \
337
+ #define ALLOCATE_STACK (elsize , size , small_stack , stack ) \
338
338
do { \
339
339
if (size <= (Py_ssize_t)Py_ARRAY_LENGTH(small_stack)) { \
340
340
stack = small_stack; \
341
341
} \
342
342
else { \
343
- stack = PyMem_Malloc(size * sizeof(type *)); \
343
+ stack = PyMem_Malloc(size * elsize); \
344
344
if (stack == NULL) { \
345
345
PyErr_NoMemory(); \
346
346
return NULL; \
@@ -425,7 +425,7 @@ partial_vectorcall(partialobject *pto, PyObject *const *args,
425
425
/* Allocate Stack */
426
426
tot_nkwds = pto_nkwds + nkwds ;
427
427
tot_nargskw = tot_nargs + tot_nkwds ;
428
- ALLOCATE_STACK (PyObject , tot_nargskw , small_stack , stack );
428
+ ALLOCATE_STACK (sizeof ( PyObject * ) , tot_nargskw , small_stack , stack );
429
429
430
430
if (nkwds ) {
431
431
/* if !pto_nkwds & nkwds, then simply append kw */
@@ -438,7 +438,7 @@ partial_vectorcall(partialobject *pto, PyObject *const *args,
438
438
439
439
/* Temporary stack for keywords that are not in pto->kw */
440
440
PyObject * * kwtail , * small_kwtail [_PY_FASTCALL_SMALL_STACK * 2 ];
441
- ALLOCATE_STACK (PyObject , nkwds * 2 , small_kwtail , kwtail );
441
+ ALLOCATE_STACK (sizeof ( PyObject * ) , nkwds * 2 , small_kwtail , kwtail );
442
442
443
443
/* Merge kw to pto_kw or add to tail (if not duplicate) */
444
444
Py_ssize_t n_tail = 0 ;
@@ -470,7 +470,7 @@ partial_vectorcall(partialobject *pto, PyObject *const *args,
470
470
Py_ssize_t n_merges = nkwds - n_tail ;
471
471
tot_nkwds = pto_nkwds + nkwds - n_merges ;
472
472
tot_nargskw = tot_nargs + tot_nkwds ;
473
- ALLOCATE_STACK (PyObject , tot_nargskw , small_stack , stack );
473
+ ALLOCATE_STACK (sizeof ( PyObject * ) , tot_nargskw , small_stack , stack );
474
474
tot_kwnames = PyTuple_New (tot_nkwds );
475
475
476
476
/* Copy pto_kw to stack */
0 commit comments