From 8f87eefe7f0576c05c488874eb9601a7a87c7312 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 12 Apr 2020 14:58:27 +0300 Subject: bpo-39943: Add the const qualifier to pointers on non-mutable PyBytes data. (GH-19472) --- Modules/_ctypes/_ctypes.c | 2 +- Modules/_ctypes/callproc.c | 2 +- Modules/_ctypes/cfield.c | 4 ++-- Modules/_cursesmodule.c | 8 ++++---- Modules/_elementtree.c | 2 +- Modules/_io/bytesio.c | 4 ++-- Modules/_io/textio.c | 2 +- Modules/_localemodule.c | 2 +- Modules/_sqlite/connection.c | 2 +- Modules/_ssl.c | 2 +- Modules/_struct.c | 4 ++-- Modules/_tkinter.c | 4 ++-- Modules/cjkcodecs/multibytecodec.c | 2 +- Modules/readline.c | 4 ++-- Objects/bytesobject.c | 15 ++++++++------- Objects/fileobject.c | 2 +- Objects/longobject.c | 2 +- Objects/stringlib/join.h | 4 ++-- Objects/unicodeobject.c | 6 +++--- Python/fileutils.c | 2 +- 20 files changed, 38 insertions(+), 37 deletions(-) diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index ba5ef39..5548c50 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -1310,7 +1310,7 @@ CharArray_get_value(CDataObject *self, void *Py_UNUSED(ignored)) static int CharArray_set_value(CDataObject *self, PyObject *value, void *Py_UNUSED(ignored)) { - char *ptr; + const char *ptr; Py_ssize_t size; if (value == NULL) { diff --git a/Modules/_ctypes/callproc.c b/Modules/_ctypes/callproc.c index d1c552a..815fc66 100644 --- a/Modules/_ctypes/callproc.c +++ b/Modules/_ctypes/callproc.c @@ -1384,7 +1384,7 @@ copy_com_pointer(PyObject *self, PyObject *args) static PyObject *py_dl_open(PyObject *self, PyObject *args) { PyObject *name, *name2; - char *name_str; + const char *name_str; void * handle; #if HAVE_DECL_RTLD_LOCAL int mode = RTLD_NOW | RTLD_LOCAL; diff --git a/Modules/_ctypes/cfield.c b/Modules/_ctypes/cfield.c index f860e6e..2060d15 100644 --- a/Modules/_ctypes/cfield.c +++ b/Modules/_ctypes/cfield.c @@ -1283,7 +1283,7 @@ s_get(void *ptr, Py_ssize_t size) static PyObject * s_set(void *ptr, PyObject *value, Py_ssize_t length) { - char *data; + const char *data; Py_ssize_t size; if(!PyBytes_Check(value)) { @@ -1321,7 +1321,7 @@ z_set(void *ptr, PyObject *value, Py_ssize_t size) return value; } if (PyBytes_Check(value)) { - *(char **)ptr = PyBytes_AsString(value); + *(const char **)ptr = PyBytes_AsString(value); Py_INCREF(value); return value; } else if (PyLong_Check(value)) { diff --git a/Modules/_cursesmodule.c b/Modules/_cursesmodule.c index ca6a89f..08991fd 100644 --- a/Modules/_cursesmodule.c +++ b/Modules/_cursesmodule.c @@ -709,7 +709,7 @@ _curses_window_addstr_impl(PyCursesWindowObject *self, int group_left_1, else #endif { - char *str = PyBytes_AS_STRING(bytesobj); + const char *str = PyBytes_AS_STRING(bytesobj); funcname = "addstr"; if (use_xy) rtn = mvwaddstr(self->win,y,x,str); @@ -792,7 +792,7 @@ _curses_window_addnstr_impl(PyCursesWindowObject *self, int group_left_1, else #endif { - char *str = PyBytes_AS_STRING(bytesobj); + const char *str = PyBytes_AS_STRING(bytesobj); funcname = "addnstr"; if (use_xy) rtn = mvwaddnstr(self->win,y,x,str,n); @@ -1710,7 +1710,7 @@ _curses_window_insstr_impl(PyCursesWindowObject *self, int group_left_1, else #endif { - char *str = PyBytes_AS_STRING(bytesobj); + const char *str = PyBytes_AS_STRING(bytesobj); funcname = "insstr"; if (use_xy) rtn = mvwinsstr(self->win,y,x,str); @@ -1795,7 +1795,7 @@ _curses_window_insnstr_impl(PyCursesWindowObject *self, int group_left_1, else #endif { - char *str = PyBytes_AS_STRING(bytesobj); + const char *str = PyBytes_AS_STRING(bytesobj); funcname = "insnstr"; if (use_xy) rtn = mvwinsnstr(self->win,y,x,str,n); diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index c0c741e..10d78dd 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -1153,7 +1153,7 @@ checkpath(PyObject* tag) return 0; } if (PyBytes_Check(tag)) { - char *p = PyBytes_AS_STRING(tag); + const char *p = PyBytes_AS_STRING(tag); const Py_ssize_t len = PyBytes_GET_SIZE(tag); if (len >= 3 && p[0] == '{' && ( p[1] == '}' || (p[1] == '*' && p[2] == '}'))) { diff --git a/Modules/_io/bytesio.c b/Modules/_io/bytesio.c index b5d308a..f4261b3 100644 --- a/Modules/_io/bytesio.c +++ b/Modules/_io/bytesio.c @@ -393,7 +393,7 @@ _io_BytesIO_tell_impl(bytesio *self) static PyObject * read_bytes(bytesio *self, Py_ssize_t size) { - char *output; + const char *output; assert(self->buf != NULL); assert(size <= self->string_size); @@ -502,7 +502,7 @@ _io_BytesIO_readlines_impl(bytesio *self, PyObject *arg) { Py_ssize_t maxsize, size, n; PyObject *result, *line; - char *output; + const char *output; CHECK_CLOSED(self); diff --git a/Modules/_io/textio.c b/Modules/_io/textio.c index 12dba38..92d6faa 100644 --- a/Modules/_io/textio.c +++ b/Modules/_io/textio.c @@ -2640,7 +2640,7 @@ _io_TextIOWrapper_tell_impl(textio *self) Py_ssize_t chars_to_skip, chars_decoded; Py_ssize_t skip_bytes, skip_back; PyObject *saved_state = NULL; - char *input, *input_end; + const char *input, *input_end; Py_ssize_t dec_buffer_len; int dec_flags; diff --git a/Modules/_localemodule.c b/Modules/_localemodule.c index 5bf6638..0819d0e 100644 --- a/Modules/_localemodule.c +++ b/Modules/_localemodule.c @@ -637,7 +637,7 @@ PyDoc_STRVAR(bindtextdomain__doc__, static PyObject* PyIntl_bindtextdomain(PyObject* self, PyObject*args) { - char *domain, *dirname, *current_dirname; + const char *domain, *dirname, *current_dirname; PyObject *dirname_obj, *dirname_bytes = NULL, *result; if (!PyArg_ParseTuple(args, "sO", &domain, &dirname_obj)) diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 92bdfe3..91041b9 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -79,7 +79,7 @@ int pysqlite_connection_init(pysqlite_Connection* self, PyObject* args, PyObject NULL }; - char* database; + const char* database; PyObject* database_obj; int detect_types = 0; PyObject* isolation_level = NULL; diff --git a/Modules/_ssl.c b/Modules/_ssl.c index ef04712..a471a26 100644 --- a/Modules/_ssl.c +++ b/Modules/_ssl.c @@ -4037,7 +4037,7 @@ error: /* internal helper function, returns -1 on error */ static int -_add_ca_certs(PySSLContext *self, void *data, Py_ssize_t len, +_add_ca_certs(PySSLContext *self, const void *data, Py_ssize_t len, int filetype) { BIO *biobuf = NULL; diff --git a/Modules/_struct.c b/Modules/_struct.c index 242ca9c..82ac0a1 100644 --- a/Modules/_struct.c +++ b/Modules/_struct.c @@ -1785,7 +1785,7 @@ s_pack_internal(PyStructObject *soself, PyObject *const *args, int offset, char* if (e->format == 's') { Py_ssize_t n; int isstring; - void *p; + const void *p; isstring = PyBytes_Check(v); if (!isstring && !PyByteArray_Check(v)) { PyErr_SetString(_structmodulestate_global->StructError, @@ -1807,7 +1807,7 @@ s_pack_internal(PyStructObject *soself, PyObject *const *args, int offset, char* } else if (e->format == 'p') { Py_ssize_t n; int isstring; - void *p; + const void *p; isstring = PyBytes_Check(v); if (!isstring && !PyByteArray_Check(v)) { PyErr_SetString(_structmodulestate_global->StructError, diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 5f001c6..199ae4f 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -574,9 +574,9 @@ SplitObj(PyObject *arg) else if (PyBytes_Check(arg)) { int argc; const char **argv; - char *list = PyBytes_AS_STRING(arg); + const char *list = PyBytes_AS_STRING(arg); - if (Tcl_SplitList((Tcl_Interp *)NULL, list, &argc, &argv) != TCL_OK) { + if (Tcl_SplitList((Tcl_Interp *)NULL, (char *)list, &argc, &argv) != TCL_OK) { Py_INCREF(arg); return arg; } diff --git a/Modules/cjkcodecs/multibytecodec.c b/Modules/cjkcodecs/multibytecodec.c index 9f9fbeb..319dc52 100644 --- a/Modules/cjkcodecs/multibytecodec.c +++ b/Modules/cjkcodecs/multibytecodec.c @@ -1246,7 +1246,7 @@ _multibytecodec_MultibyteIncrementalDecoder_setstate_impl(MultibyteIncrementalDe PyObject *buffer; PyLongObject *statelong; Py_ssize_t buffersize; - char *bufferstr; + const char *bufferstr; unsigned char statebytes[8]; if (!PyArg_ParseTuple(state, "SO!;setstate(): illegal state argument", diff --git a/Modules/readline.c b/Modules/readline.c index 225d06b..12d6cc7 100644 --- a/Modules/readline.c +++ b/Modules/readline.c @@ -234,7 +234,7 @@ static PyObject * write_history_file(PyObject *self, PyObject *args) { PyObject *filename_obj = Py_None, *filename_bytes; - char *filename; + const char *filename; int err; if (!PyArg_ParseTuple(args, "|O:write_history_file", &filename_obj)) return NULL; @@ -270,7 +270,7 @@ append_history_file(PyObject *self, PyObject *args) { int nelements; PyObject *filename_obj = Py_None, *filename_bytes; - char *filename; + const char *filename; int err; if (!PyArg_ParseTuple(args, "i|O:append_history_file", &nelements, &filename_obj)) return NULL; diff --git a/Objects/bytesobject.c b/Objects/bytesobject.c index 987d98d..7be075b 100644 --- a/Objects/bytesobject.c +++ b/Objects/bytesobject.c @@ -1598,7 +1598,7 @@ bytes_subscript(PyBytesObject* self, PyObject* item) else if (PySlice_Check(item)) { Py_ssize_t start, stop, step, slicelength, i; size_t cur; - char* source_buf; + const char* source_buf; char* result_buf; PyObject* result; @@ -1863,7 +1863,7 @@ Py_LOCAL_INLINE(PyObject *) do_xstrip(PyBytesObject *self, int striptype, PyObject *sepobj) { Py_buffer vsep; - char *s = PyBytes_AS_STRING(self); + const char *s = PyBytes_AS_STRING(self); Py_ssize_t len = PyBytes_GET_SIZE(self); char *sep; Py_ssize_t seplen; @@ -1903,7 +1903,7 @@ do_xstrip(PyBytesObject *self, int striptype, PyObject *sepobj) Py_LOCAL_INLINE(PyObject *) do_strip(PyBytesObject *self, int striptype) { - char *s = PyBytes_AS_STRING(self); + const char *s = PyBytes_AS_STRING(self); Py_ssize_t len = PyBytes_GET_SIZE(self), i, j; i = 0; @@ -2020,7 +2020,8 @@ bytes_translate_impl(PyBytesObject *self, PyObject *table, PyObject *deletechars) /*[clinic end generated code: output=43be3437f1956211 input=0ecdf159f654233c]*/ { - char *input, *output; + const char *input; + char *output; Py_buffer table_view = {NULL, NULL}; Py_buffer del_table_view = {NULL, NULL}; const char *table_chars; @@ -2371,7 +2372,7 @@ static PyObject * bytes_hex_impl(PyBytesObject *self, PyObject *sep, int bytes_per_sep) /*[clinic end generated code: output=1f134da504064139 input=f1238d3455990218]*/ { - char* argbuf = PyBytes_AS_STRING(self); + const char *argbuf = PyBytes_AS_STRING(self); Py_ssize_t arglen = PyBytes_GET_SIZE(self); return _Py_strhex_with_sep(argbuf, arglen, sep, bytes_per_sep); } @@ -3188,7 +3189,7 @@ _PyBytesWriter_AsString(_PyBytesWriter *writer) Py_LOCAL_INLINE(Py_ssize_t) _PyBytesWriter_GetSize(_PyBytesWriter *writer, char *str) { - char *start = _PyBytesWriter_AsString(writer); + const char *start = _PyBytesWriter_AsString(writer); assert(str != NULL); assert(str >= start); assert(str - start <= writer->allocated); @@ -3199,7 +3200,7 @@ _PyBytesWriter_GetSize(_PyBytesWriter *writer, char *str) Py_LOCAL_INLINE(int) _PyBytesWriter_CheckConsistency(_PyBytesWriter *writer, char *str) { - char *start, *end; + const char *start, *end; if (writer->use_small_buffer) { assert(writer->buffer == NULL); diff --git a/Objects/fileobject.c b/Objects/fileobject.c index 840d17b..b8ec56e 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -76,7 +76,7 @@ PyFile_GetLine(PyObject *f, int n) } if (n < 0 && result != NULL && PyBytes_Check(result)) { - char *s = PyBytes_AS_STRING(result); + const char *s = PyBytes_AS_STRING(result); Py_ssize_t len = PyBytes_GET_SIZE(result); if (len == 0) { Py_DECREF(result); diff --git a/Objects/longobject.c b/Objects/longobject.c index 5d225cb..a66e1c4 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -5071,7 +5071,7 @@ long_new_impl(PyTypeObject *type, PyObject *x, PyObject *obase) if (PyUnicode_Check(x)) return PyLong_FromUnicodeObject(x, (int)base); else if (PyByteArray_Check(x) || PyBytes_Check(x)) { - char *string; + const char *string; if (PyByteArray_Check(x)) string = PyByteArray_AS_STRING(x); else diff --git a/Objects/stringlib/join.h b/Objects/stringlib/join.h index 8ad598a..53bcbde 100644 --- a/Objects/stringlib/join.h +++ b/Objects/stringlib/join.h @@ -7,8 +7,8 @@ Py_LOCAL_INLINE(PyObject *) STRINGLIB(bytes_join)(PyObject *sep, PyObject *iterable) { - char *sepstr = STRINGLIB_STR(sep); - const Py_ssize_t seplen = STRINGLIB_LEN(sep); + const char *sepstr = STRINGLIB_STR(sep); + Py_ssize_t seplen = STRINGLIB_LEN(sep); PyObject *res = NULL; char *p; Py_ssize_t seqlen = 0; diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 3c79feb..7f39022 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -3887,7 +3887,7 @@ PyUnicode_FSConverter(PyObject* arg, void* addr) PyObject *path = NULL; PyObject *output = NULL; Py_ssize_t size; - void *data; + const char *data; if (arg == NULL) { Py_DECREF(*(PyObject**)addr); *(PyObject**)addr = NULL; @@ -4718,7 +4718,7 @@ _PyUnicode_EncodeUTF7(PyObject *str, unsigned int base64bits = 0; unsigned long base64buffer = 0; char * out; - char * start; + const char * start; if (PyUnicode_READY(str) == -1) return NULL; @@ -5446,7 +5446,7 @@ unicode_fill_utf8(PyObject *unicode) return -1; } - char *start = writer.use_small_buffer ? writer.small_buffer : + const char *start = writer.use_small_buffer ? writer.small_buffer : PyBytes_AS_STRING(writer.buffer); Py_ssize_t len = end - start; diff --git a/Python/fileutils.c b/Python/fileutils.c index 6345553..19ead9d 100644 --- a/Python/fileutils.c +++ b/Python/fileutils.c @@ -1452,7 +1452,7 @@ _Py_fopen_obj(PyObject *path, const char *mode) && errno == EINTR && !(async_err = PyErr_CheckSignals())); #else PyObject *bytes; - char *path_bytes; + const char *path_bytes; assert(PyGILState_Check()); -- cgit v0.12