Skip to content

Commit 30494c4

Browse files
committed
fix pyssizet
1 parent c43b154 commit 30494c4

File tree

2 files changed

+12
-10
lines changed

2 files changed

+12
-10
lines changed

mypyc/lib-rt/bytes_ops.c

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ CPyTagged CPyBytes_Ord(PyObject *obj) {
164164
return CPY_INT_TAG;
165165
}
166166

167-
PyObject *CPyBytes_Rjust(PyObject *self, Py_ssize_t width, PyObject *fillbyte) {
167+
PyObject *CPyBytes_Rjust(PyObject *self, CPyTagged width, PyObject *fillbyte) {
168168
if (!PyBytes_Check(self)) {
169169
PyErr_SetString(PyExc_TypeError, "self must be bytes");
170170
return NULL;
@@ -173,21 +173,22 @@ PyObject *CPyBytes_Rjust(PyObject *self, Py_ssize_t width, PyObject *fillbyte) {
173173
PyErr_SetString(PyExc_TypeError, "fillbyte must be a single byte");
174174
return NULL;
175175
}
176+
Py_ssize_t width_size_t = CPyTagged_AsSsize_t(width)
176177
Py_ssize_t len = PyBytes_Size(self);
177-
if (width <= len) {
178+
if (width_size_t <= len) {
178179
return PyBytes_FromStringAndSize(PyBytes_AsString(self), len);
179180
}
180181
char fill = PyBytes_AsString(fillbyte)[0];
181-
Py_ssize_t pad = width - len;
182-
PyObject *result = PyBytes_FromStringAndSize(NULL, width);
182+
Py_ssize_t pad = width_size_t - len;
183+
PyObject *result = PyBytes_FromStringAndSize(NULL, width_size_t);
183184
if (!result) return NULL;
184185
char *res_buf = PyBytes_AsString(result);
185186
memset(res_buf, fill, pad);
186187
memcpy(res_buf + pad, PyBytes_AsString(self), len);
187188
return result;
188189
}
189190

190-
PyObject *CPyBytes_Ljust(PyObject *self, Py_ssize_t width, PyObject *fillbyte) {
191+
PyObject *CPyBytes_Ljust(PyObject *self, CPyTagged width, PyObject *fillbyte) {
191192
if (!PyBytes_Check(self)) {
192193
PyErr_SetString(PyExc_TypeError, "self must be bytes");
193194
return NULL;
@@ -196,13 +197,14 @@ PyObject *CPyBytes_Ljust(PyObject *self, Py_ssize_t width, PyObject *fillbyte) {
196197
PyErr_SetString(PyExc_TypeError, "fillbyte must be a single byte");
197198
return NULL;
198199
}
200+
Py_ssize_t width_size_t = CPyTagged_AsSsize_t(width)
199201
Py_ssize_t len = PyBytes_Size(self);
200-
if (width <= len) {
202+
if (width_size_t <= len) {
201203
return PyBytes_FromStringAndSize(PyBytes_AsString(self), len);
202204
}
203205
char fill = PyBytes_AsString(fillbyte)[0];
204-
Py_ssize_t pad = width - len;
205-
PyObject *result = PyBytes_FromStringAndSize(NULL, width);
206+
Py_ssize_t pad = width_size_t - len;
207+
PyObject *result = PyBytes_FromStringAndSize(NULL, width_size_t);
206208
if (!result) return NULL;
207209
char *res_buf = PyBytes_AsString(result);
208210
memcpy(res_buf, PyBytes_AsString(self), len);

mypyc/primitives/bytes_ops.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@
130130
# bytes.rjust(width, fillbyte=b' ')
131131
method_op(
132132
name="rjust",
133-
arg_types=[bytes_rprimitive, c_pyssize_t_rprimitive, bytes_rprimitive],
133+
arg_types=[bytes_rprimitive, int_rprimitive, bytes_rprimitive],
134134
return_type=bytes_rprimitive,
135135
c_function_name="CPyBytes_Rjust",
136136
error_kind=ERR_MAGIC,
@@ -139,7 +139,7 @@
139139
# bytes.ljust(width, fillbyte=b' ')
140140
method_op(
141141
name="ljust",
142-
arg_types=[bytes_rprimitive, c_pyssize_t_rprimitive, bytes_rprimitive],
142+
arg_types=[bytes_rprimitive, int_rprimitive, bytes_rprimitive],
143143
return_type=bytes_rprimitive,
144144
c_function_name="CPyBytes_Ljust",
145145
error_kind=ERR_MAGIC,

0 commit comments

Comments
 (0)