Skip to content

Commit 4d4be47

Browse files
authored
Do not use Py_ssize_clean_t (GH-25940)
1 parent 092f9dd commit 4d4be47

File tree

9 files changed

+46
-56
lines changed

9 files changed

+46
-56
lines changed

Include/pyport.h

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,8 @@ typedef Py_ssize_t Py_hash_t;
118118
#define SIZEOF_PY_UHASH_T SIZEOF_SIZE_T
119119
typedef size_t Py_uhash_t;
120120

121-
/* Only used for compatibility with code that may not be PY_SSIZE_T_CLEAN. */
122-
#ifdef PY_SSIZE_T_CLEAN
121+
/* Now PY_SSIZE_T_CLEAN is mandatory. This is just for backward compatibility. */
123122
typedef Py_ssize_t Py_ssize_clean_t;
124-
#else
125-
typedef int Py_ssize_clean_t;
126-
#endif
127123

128124
/* Largest possible value of size_t. */
129125
#define PY_SIZE_MAX SIZE_MAX

Lib/test/clinic.test

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1659,9 +1659,9 @@ PyDoc_STRVAR(test_str_converter__doc__,
16591659
static PyObject *
16601660
test_str_converter_impl(PyObject *module, const char *a, const char *b,
16611661
const char *c, const char *d, const char *e,
1662-
const char *f, Py_ssize_clean_t f_length,
1663-
const char *g, Py_ssize_clean_t g_length,
1664-
const char *h, Py_ssize_clean_t h_length);
1662+
const char *f, Py_ssize_t f_length, const char *g,
1663+
Py_ssize_t g_length, const char *h,
1664+
Py_ssize_t h_length);
16651665

16661666
static PyObject *
16671667
test_str_converter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
@@ -1673,11 +1673,11 @@ test_str_converter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
16731673
const char *d = "cef";
16741674
const char *e = "gh";
16751675
const char *f = "ij";
1676-
Py_ssize_clean_t f_length;
1676+
Py_ssize_t f_length;
16771677
const char *g = "kl";
1678-
Py_ssize_clean_t g_length;
1678+
Py_ssize_t g_length;
16791679
const char *h = "mn";
1680-
Py_ssize_clean_t h_length;
1680+
Py_ssize_t h_length;
16811681

16821682
if (!_PyArg_ParseStack(args, nargs, "|sssyzy#s#z#:test_str_converter",
16831683
&a, &b, &c, &d, &e, &f, &f_length, &g, &g_length, &h, &h_length)) {
@@ -1692,10 +1692,10 @@ exit:
16921692
static PyObject *
16931693
test_str_converter_impl(PyObject *module, const char *a, const char *b,
16941694
const char *c, const char *d, const char *e,
1695-
const char *f, Py_ssize_clean_t f_length,
1696-
const char *g, Py_ssize_clean_t g_length,
1697-
const char *h, Py_ssize_clean_t h_length)
1698-
/*[clinic end generated code: output=ad868ad94a488e32 input=8afe9da8185cd38c]*/
1695+
const char *f, Py_ssize_t f_length, const char *g,
1696+
Py_ssize_t g_length, const char *h,
1697+
Py_ssize_t h_length)
1698+
/*[clinic end generated code: output=5def009caa2fd1ac input=8afe9da8185cd38c]*/
16991699

17001700

17011701
/*[clinic input]
@@ -1720,8 +1720,8 @@ PyDoc_STRVAR(test_str_converter_encoding__doc__,
17201720

17211721
static PyObject *
17221722
test_str_converter_encoding_impl(PyObject *module, char *a, char *b, char *c,
1723-
char *d, Py_ssize_clean_t d_length, char *e,
1724-
Py_ssize_clean_t e_length);
1723+
char *d, Py_ssize_t d_length, char *e,
1724+
Py_ssize_t e_length);
17251725

17261726
static PyObject *
17271727
test_str_converter_encoding(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
@@ -1731,9 +1731,9 @@ test_str_converter_encoding(PyObject *module, PyObject *const *args, Py_ssize_t
17311731
char *b = NULL;
17321732
char *c = NULL;
17331733
char *d = NULL;
1734-
Py_ssize_clean_t d_length;
1734+
Py_ssize_t d_length;
17351735
char *e = NULL;
1736-
Py_ssize_clean_t e_length;
1736+
Py_ssize_t e_length;
17371737

17381738
if (!_PyArg_ParseStack(args, nargs, "esesetes#et#:test_str_converter_encoding",
17391739
"idna", &a, "idna", &b, "idna", &c, "idna", &d, &d_length, "idna", &e, &e_length)) {
@@ -1768,9 +1768,9 @@ exit:
17681768

17691769
static PyObject *
17701770
test_str_converter_encoding_impl(PyObject *module, char *a, char *b, char *c,
1771-
char *d, Py_ssize_clean_t d_length, char *e,
1772-
Py_ssize_clean_t e_length)
1773-
/*[clinic end generated code: output=f579dd9e795a364e input=eb4c38e1f898f402]*/
1771+
char *d, Py_ssize_t d_length, char *e,
1772+
Py_ssize_t e_length)
1773+
/*[clinic end generated code: output=5cae635c092334cb input=eb4c38e1f898f402]*/
17741774

17751775

17761776
/*[clinic input]
@@ -1796,10 +1796,8 @@ PyDoc_STRVAR(test_Py_UNICODE_converter__doc__,
17961796
static PyObject *
17971797
test_Py_UNICODE_converter_impl(PyObject *module, const Py_UNICODE *a,
17981798
const Py_UNICODE *b, const Py_UNICODE *c,
1799-
const Py_UNICODE *d,
1800-
Py_ssize_clean_t d_length,
1801-
const Py_UNICODE *e,
1802-
Py_ssize_clean_t e_length);
1799+
const Py_UNICODE *d, Py_ssize_t d_length,
1800+
const Py_UNICODE *e, Py_ssize_t e_length);
18031801

18041802
static PyObject *
18051803
test_Py_UNICODE_converter(PyObject *module, PyObject *const *args, Py_ssize_t nargs)
@@ -1809,9 +1807,9 @@ test_Py_UNICODE_converter(PyObject *module, PyObject *const *args, Py_ssize_t na
18091807
const Py_UNICODE *b;
18101808
const Py_UNICODE *c;
18111809
const Py_UNICODE *d;
1812-
Py_ssize_clean_t d_length;
1810+
Py_ssize_t d_length;
18131811
const Py_UNICODE *e;
1814-
Py_ssize_clean_t e_length;
1812+
Py_ssize_t e_length;
18151813

18161814
if (!_PyArg_ParseStack(args, nargs, "O&O&O&u#Z#:test_Py_UNICODE_converter",
18171815
_PyUnicode_WideCharString_Converter, &a, _PyUnicode_WideCharString_Converter, &b, _PyUnicode_WideCharString_Opt_Converter, &c, &d, &d_length, &e, &e_length)) {
@@ -1839,11 +1837,9 @@ exit:
18391837
static PyObject *
18401838
test_Py_UNICODE_converter_impl(PyObject *module, const Py_UNICODE *a,
18411839
const Py_UNICODE *b, const Py_UNICODE *c,
1842-
const Py_UNICODE *d,
1843-
Py_ssize_clean_t d_length,
1844-
const Py_UNICODE *e,
1845-
Py_ssize_clean_t e_length)
1846-
/*[clinic end generated code: output=ef45e982fedf0b3d input=064a3b68ad7f04b0]*/
1840+
const Py_UNICODE *d, Py_ssize_t d_length,
1841+
const Py_UNICODE *e, Py_ssize_t e_length)
1842+
/*[clinic end generated code: output=65d6607da302afd0 input=064a3b68ad7f04b0]*/
18471843

18481844

18491845
/*[clinic input]

Modules/_dbmmodule.c

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,8 @@ Return the value for key if present, otherwise default.
299299

300300
static PyObject *
301301
_dbm_dbm_get_impl(dbmobject *self, PyTypeObject *cls, const char *key,
302-
Py_ssize_clean_t key_length, PyObject *default_value)
303-
/*[clinic end generated code: output=34851b5dc1c664dc input=66b993b8349fa8c1]*/
302+
Py_ssize_t key_length, PyObject *default_value)
303+
/*[clinic end generated code: output=b4e55f8b6d482bc4 input=66b993b8349fa8c1]*/
304304
{
305305
datum dbm_key, val;
306306
_dbm_state *state = PyType_GetModuleState(cls);
@@ -331,9 +331,8 @@ If key is not in the database, it is inserted with default as the value.
331331

332332
static PyObject *
333333
_dbm_dbm_setdefault_impl(dbmobject *self, PyTypeObject *cls, const char *key,
334-
Py_ssize_clean_t key_length,
335-
PyObject *default_value)
336-
/*[clinic end generated code: output=d5c68fe673886767 input=126a3ff15c5f8232]*/
334+
Py_ssize_t key_length, PyObject *default_value)
335+
/*[clinic end generated code: output=9c2f6ea6d0fb576c input=126a3ff15c5f8232]*/
337336
{
338337
datum dbm_key, val;
339338
Py_ssize_t tmp_size;

Modules/_gdbmmodule.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -448,8 +448,8 @@ to create a list in memory that contains them all:
448448

449449
static PyObject *
450450
_gdbm_gdbm_nextkey_impl(gdbmobject *self, PyTypeObject *cls, const char *key,
451-
Py_ssize_clean_t key_length)
452-
/*[clinic end generated code: output=204964441fdbaf02 input=fcf6a51a96ce0172]*/
451+
Py_ssize_t key_length)
452+
/*[clinic end generated code: output=c81a69300ef41766 input=fcf6a51a96ce0172]*/
453453
{
454454
PyObject *v;
455455
datum dbm_key, nextkey;

Modules/clinic/_dbmmodule.c.h

Lines changed: 5 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/clinic/_gdbmmodule.c.h

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/clinic/unicodedata.c.h

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/unicodedata.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1389,8 +1389,8 @@ corresponding character. If not found, KeyError is raised.
13891389

13901390
static PyObject *
13911391
unicodedata_UCD_lookup_impl(PyObject *self, const char *name,
1392-
Py_ssize_clean_t name_length)
1393-
/*[clinic end generated code: output=765cb8186788e6be input=a557be0f8607a0d6]*/
1392+
Py_ssize_t name_length)
1393+
/*[clinic end generated code: output=7f03fc4959b242f6 input=a557be0f8607a0d6]*/
13941394
{
13951395
Py_UCS4 code;
13961396
unsigned int index;

Tools/clinic/clinic.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2534,7 +2534,7 @@ def _render_self(self, parameter, data):
25342534
# impl_parameters
25352535
data.impl_parameters.append(self.simple_declaration(by_reference=self.impl_by_reference))
25362536
if self.length:
2537-
data.impl_parameters.append("Py_ssize_clean_t " + self.length_name())
2537+
data.impl_parameters.append("Py_ssize_t " + self.length_name())
25382538

25392539
def _render_non_self(self, parameter, data):
25402540
self.parameter = parameter
@@ -2640,7 +2640,7 @@ def declaration(self):
26402640
declaration.append(default)
26412641
declaration.append(";")
26422642
if self.length:
2643-
declaration.append('\nPy_ssize_clean_t ')
2643+
declaration.append('\nPy_ssize_t ')
26442644
declaration.append(self.length_name())
26452645
declaration.append(';')
26462646
return "".join(declaration)

0 commit comments

Comments
 (0)