Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c994ffe

Browse files
authored
bpo-11717: fix ssize_t redefinition error when targeting 32bit Windows app (GH-24479)
1 parent 0242494 commit c994ffe

5 files changed

Lines changed: 181 additions & 179 deletions

File tree

Include/pyport.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ typedef intptr_t Py_intptr_t;
101101
* sizeof(size_t). C99 doesn't define such a thing directly (size_t is an
102102
* unsigned integral type). See PEP 353 for details.
103103
*/
104-
#ifdef HAVE_SSIZE_T
104+
#ifdef HAVE_PY_SSIZE_T
105+
106+
#elif HAVE_SSIZE_T
105107
typedef ssize_t Py_ssize_t;
106108
#elif SIZEOF_VOID_P == SIZEOF_SIZE_T
107109
typedef Py_intptr_t Py_ssize_t;

Objects/structseq.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ _Py_IDENTIFIER(n_sequence_fields);
2424
_Py_IDENTIFIER(n_fields);
2525
_Py_IDENTIFIER(n_unnamed_fields);
2626

27-
static ssize_t
27+
static Py_ssize_t
2828
get_type_attr_as_size(PyTypeObject *tp, _Py_Identifier *id)
2929
{
3030
PyObject *name = _PyUnicode_FromId(id);

PC/pyconfig.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,11 @@ WIN32 is still required for the locale module.
165165

166166
/* Define like size_t, omitting the "unsigned" */
167167
#ifdef MS_WIN64
168-
typedef __int64 ssize_t;
168+
typedef __int64 Py_ssize_t;
169169
#else
170-
typedef _W64 int ssize_t;
170+
typedef _W64 int Py_ssize_t;
171171
#endif
172-
#define HAVE_SSIZE_T 1
172+
#define HAVE_PY_SSIZE_T 1
173173

174174
#if defined(MS_WIN32) && !defined(MS_WIN64)
175175
#if defined(_M_IX86)

0 commit comments

Comments
 (0)