From 85b0f5beb182cca8b1607accce2caab87ee29835 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sun, 20 Nov 2016 10:16:47 +0200 Subject: [PATCH] Added the const qualifier to char* variables that refer to readonly internal UTF-8 represenatation of Unicode objects. --- Modules/_ctypes/_ctypes.c | 4 ++-- Modules/_ctypes/stgdict.c | 4 ++-- Modules/_elementtree.c | 2 +- Modules/_io/bufferedio.c | 2 +- Modules/_io/stringio.c | 2 +- Modules/_pickle.c | 4 ++-- Modules/_sqlite/connection.c | 2 +- Modules/_sqlite/row.c | 8 ++++---- Modules/_sqlite/statement.c | 2 +- Modules/_tkinter.c | 6 +++--- Modules/socketmodule.c | 2 +- Modules/syslogmodule.c | 2 +- Objects/fileobject.c | 8 +++----- Objects/floatobject.c | 6 +++--- Objects/longobject.c | 3 ++- Objects/moduleobject.c | 4 ++-- Objects/setobject.c | 2 +- Objects/structseq.c | 2 +- Objects/typeobject.c | 4 ++-- Python/bltinmodule.c | 4 ++-- Python/ceval.c | 10 +++++----- Python/codecs.c | 2 +- Python/compile.c | 2 +- Python/getargs.c | 14 +++++++------- Python/import.c | 2 +- Python/pylifecycle.c | 6 +++--- Python/pythonrun.c | 6 +++--- Python/structmember.c | 2 +- Python/sysmodule.c | 4 ++-- 29 files changed, 60 insertions(+), 61 deletions(-) diff --git a/Modules/_ctypes/_ctypes.c b/Modules/_ctypes/_ctypes.c index 4807e4f51dd..de1ae3d0cbd 100644 --- a/Modules/_ctypes/_ctypes.c +++ b/Modules/_ctypes/_ctypes.c @@ -1829,7 +1829,7 @@ static PyCArgObject * PyCSimpleType_paramfunc(CDataObject *self) { StgDictObject *dict; - char *fmt; + const char *fmt; PyCArgObject *parg; struct fielddesc *fd; @@ -2039,7 +2039,7 @@ static PyObject * PyCSimpleType_from_param(PyObject *type, PyObject *value) { StgDictObject *dict; - char *fmt; + const char *fmt; PyCArgObject *parg; struct fielddesc *fd; PyObject *as_parameter; diff --git a/Modules/_ctypes/stgdict.c b/Modules/_ctypes/stgdict.c index 716d1e9e8eb..53cfa79864b 100644 --- a/Modules/_ctypes/stgdict.c +++ b/Modules/_ctypes/stgdict.c @@ -488,8 +488,8 @@ PyCStructUnionType_update_stgdict(PyObject *type, PyObject *fields, int isStruct bitsize = 0; if (isStruct && !isPacked) { - char *fieldfmt = dict->format ? dict->format : "B"; - char *fieldname = PyUnicode_AsUTF8(name); + const char *fieldfmt = dict->format ? dict->format : "B"; + const char *fieldname = PyUnicode_AsUTF8(name); char *ptr; Py_ssize_t len; char *buf; diff --git a/Modules/_elementtree.c b/Modules/_elementtree.c index 59375204eea..71245c23d96 100644 --- a/Modules/_elementtree.c +++ b/Modules/_elementtree.c @@ -3613,7 +3613,7 @@ _elementtree_XMLParser__setevents_impl(XMLParserObject *self, for (i = 0; i < PySequence_Size(events_seq); ++i) { PyObject *event_name_obj = PySequence_Fast_GET_ITEM(events_seq, i); - char *event_name = NULL; + const char *event_name = NULL; if (PyUnicode_Check(event_name_obj)) { event_name = PyUnicode_AsUTF8(event_name_obj); } else if (PyBytes_Check(event_name_obj)) { diff --git a/Modules/_io/bufferedio.c b/Modules/_io/bufferedio.c index c760522616a..2b43fd859c5 100644 --- a/Modules/_io/bufferedio.c +++ b/Modules/_io/bufferedio.c @@ -305,7 +305,7 @@ _enter_buffered_busy(buffered *self) "could not acquire lock for %A at interpreter " "shutdown, possibly due to daemon threads", (PyObject *) self); - char *msg = PyUnicode_AsUTF8(msgobj); + const char *msg = PyUnicode_AsUTF8(msgobj); Py_FatalError(msg); } return 1; diff --git a/Modules/_io/stringio.c b/Modules/_io/stringio.c index 8542efd9726..93c8b47de39 100644 --- a/Modules/_io/stringio.c +++ b/Modules/_io/stringio.c @@ -693,7 +693,7 @@ _io_StringIO___init___impl(stringio *self, PyObject *value, PyObject *newline_obj) /*[clinic end generated code: output=a421ea023b22ef4e input=cee2d9181b2577a3]*/ { - char *newline = "\n"; + const char *newline = "\n"; Py_ssize_t value_len; /* Parse the newline argument. We only want to allow unicode objects or diff --git a/Modules/_pickle.c b/Modules/_pickle.c index 79113e0a93b..d6d5cca10fa 100644 --- a/Modules/_pickle.c +++ b/Modules/_pickle.c @@ -1941,7 +1941,7 @@ save_long(PicklerObject *self, PyObject *obj) goto error; } else { - char *string; + const char *string; /* proto < 2: write the repr and newline. This is quadratic-time (in the number of digits), in both directions. We add a trailing 'L' @@ -2218,7 +2218,7 @@ write_unicode_binary(PicklerObject *self, PyObject *obj) { PyObject *encoded = NULL; Py_ssize_t size; - char *data; + const char *data; int r; if (PyUnicode_READY(obj)) diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 1c6aa54c224..4cd3cb3e050 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -1489,7 +1489,7 @@ pysqlite_connection_create_collation(pysqlite_Connection* self, PyObject* args) PyObject* retval; Py_ssize_t i, len; _Py_IDENTIFIER(upper); - char *uppercase_name_str; + const char *uppercase_name_str; int rc; unsigned int kind; void *data; diff --git a/Modules/_sqlite/row.c b/Modules/_sqlite/row.c index 53342f3444c..c6c3e98bb20 100644 --- a/Modules/_sqlite/row.c +++ b/Modules/_sqlite/row.c @@ -79,12 +79,12 @@ PyObject* pysqlite_row_item(pysqlite_Row* self, Py_ssize_t idx) PyObject* pysqlite_row_subscript(pysqlite_Row* self, PyObject* idx) { Py_ssize_t _idx; - char* key; + const char *key; Py_ssize_t nitems, i; - char* compare_key; + const char *compare_key; - char* p1; - char* p2; + const char *p1; + const char *p2; PyObject* item; diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 0df661b9c7a..8b45a033204 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -112,7 +112,7 @@ int pysqlite_statement_create(pysqlite_Statement* self, pysqlite_Connection* con int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter) { int rc = SQLITE_OK; - char* string; + const char *string; Py_ssize_t buflen; parameter_type paramtype; diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 3e96aa0cd50..f69a4dfed9b 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -536,7 +536,7 @@ SplitObj(PyObject *arg) else if (PyUnicode_Check(arg)) { int argc; const char **argv; - char *list = PyUnicode_AsUTF8(arg); + const char *list = PyUnicode_AsUTF8(arg); if (list == NULL || Tcl_SplitList((Tcl_Interp *)NULL, list, &argc, &argv) != TCL_OK) { @@ -993,7 +993,7 @@ asBignumObj(PyObject *value) Tcl_Obj *result; int neg; PyObject *hexstr; - char *hexchars; + const char *hexchars; mp_int bigValue; neg = Py_SIZE(value) < 0; @@ -1723,7 +1723,7 @@ class varname_converter(CConverter): static int varname_converter(PyObject *in, void *_out) { - char *s; + const char *s; const char **out = (const char**)_out; if (PyBytes_Check(in)) { if (PyBytes_GET_SIZE(in) > INT_MAX) { diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c index feaa212a0ab..7f6cd4d10a2 100644 --- a/Modules/socketmodule.c +++ b/Modules/socketmodule.c @@ -5982,7 +5982,7 @@ socket_getaddrinfo(PyObject *self, PyObject *args, PyObject* kwargs) PyObject *hobj = NULL; PyObject *pobj = (PyObject *)NULL; char pbuf[30]; - char *hptr, *pptr; + const char *hptr, *pptr; int family, socktype, protocol, flags; int error; PyObject *all = (PyObject *)NULL; diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c index 7afca58d0ec..412e4365e51 100644 --- a/Modules/syslogmodule.c +++ b/Modules/syslogmodule.c @@ -116,7 +116,7 @@ syslog_openlog(PyObject * self, PyObject * args, PyObject *kwds) long facility = LOG_USER; PyObject *new_S_ident_o = NULL; static char *keywords[] = {"ident", "logoption", "facility", 0}; - char *ident = NULL; + const char *ident = NULL; if (!PyArg_ParseTupleAndKeywords(args, kwds, "|Ull:openlog", keywords, &new_S_ident_o, &logopt, &facility)) diff --git a/Objects/fileobject.c b/Objects/fileobject.c index f4424184d2d..32f8a8983ef 100644 --- a/Objects/fileobject.c +++ b/Objects/fileobject.c @@ -367,7 +367,7 @@ stdprinter_write(PyStdPrinter_Object *self, PyObject *args) { PyObject *unicode; PyObject *bytes = NULL; - char *str; + const char *str; Py_ssize_t n; int err; @@ -389,10 +389,8 @@ stdprinter_write(PyStdPrinter_Object *self, PyObject *args) bytes = _PyUnicode_AsUTF8String(unicode, "backslashreplace"); if (bytes == NULL) return NULL; - if (PyBytes_AsStringAndSize(bytes, &str, &n) < 0) { - Py_DECREF(bytes); - return NULL; - } + str = PyBytes_AS_STRING(bytes); + n = PyBytes_GET_SIZE(bytes); } n = _Py_write(self->fd, str, n); diff --git a/Objects/floatobject.c b/Objects/floatobject.c index 80bf71efd21..17a55dd114d 100644 --- a/Objects/floatobject.c +++ b/Objects/floatobject.c @@ -1225,7 +1225,7 @@ float_fromhex(PyObject *cls, PyObject *arg) PyObject *result; double x; long exp, top_exp, lsb, key_digit; - char *s, *coeff_start, *s_store, *coeff_end, *exp_start, *s_end; + const char *s, *coeff_start, *s_store, *coeff_end, *exp_start, *s_end; int half_eps, digit, round_up, negate=0; Py_ssize_t length, ndigits, fdigits, i; @@ -1288,7 +1288,7 @@ float_fromhex(PyObject *cls, PyObject *arg) s++; /* infinities and nans */ - x = _Py_parse_inf_or_nan(s, &coeff_end); + x = _Py_parse_inf_or_nan(s, (char **)&coeff_end); if (coeff_end != s) { s = coeff_end; goto finished; @@ -1619,7 +1619,7 @@ static float_format_type detected_double_format, detected_float_format; static PyObject * float_getformat(PyTypeObject *v, PyObject* arg) { - char* s; + const char *s; float_format_type r; if (!PyUnicode_Check(arg)) { diff --git a/Objects/longobject.c b/Objects/longobject.c index b0f6b8c9533..822ed1632fd 100644 --- a/Objects/longobject.c +++ b/Objects/longobject.c @@ -2491,7 +2491,8 @@ PyObject * PyLong_FromUnicodeObject(PyObject *u, int base) { PyObject *result, *asciidig; - char *buffer, *end = NULL; + const char *buffer; + char *end = NULL; Py_ssize_t buflen; asciidig = _PyUnicode_TransformDecimalAndSpaceToASCII(u); diff --git a/Objects/moduleobject.c b/Objects/moduleobject.c index 79be51a806b..701bcb1df35 100644 --- a/Objects/moduleobject.c +++ b/Objects/moduleobject.c @@ -231,7 +231,7 @@ PyModule_FromDefAndSpec2(struct PyModuleDef* def, PyObject *spec, int module_api PyObject *nameobj; PyObject *m = NULL; int has_execution_slots = 0; - char *name; + const char *name; int ret; PyModuleDef_Init(def); @@ -512,7 +512,7 @@ const char * PyModule_GetFilename(PyObject *m) { PyObject *fileobj; - char *utf8; + const char *utf8; fileobj = PyModule_GetFilenameObject(m); if (fileobj == NULL) return NULL; diff --git a/Objects/setobject.c b/Objects/setobject.c index fdb9d3600d9..b7e0617db3b 100644 --- a/Objects/setobject.c +++ b/Objects/setobject.c @@ -2398,7 +2398,7 @@ static PyObject * test_c_api(PySetObject *so) { Py_ssize_t count; - char *s; + const char *s; Py_ssize_t i; PyObject *elem=NULL, *dup=NULL, *t, *f, *dup2, *x=NULL; PyObject *ob = (PyObject *)so; diff --git a/Objects/structseq.c b/Objects/structseq.c index 5489aef6d08..6f1782f29b8 100644 --- a/Objects/structseq.c +++ b/Objects/structseq.c @@ -182,7 +182,7 @@ structseq_repr(PyStructSequence *obj) for (i=0; i < VISIBLE_SIZE(obj); i++) { PyObject *val, *repr; - char *cname, *crepr; + const char *cname, *crepr; cname = typ->tp_members[i].name; if (cname == NULL) { diff --git a/Objects/typeobject.c b/Objects/typeobject.c index 606e08e449e..af092716805 100644 --- a/Objects/typeobject.c +++ b/Objects/typeobject.c @@ -1624,7 +1624,7 @@ consistent method resolution\norder (MRO) for bases"); i = 0; while (PyDict_Next(set, &i, &k, &v) && (size_t)off < sizeof(buf)) { PyObject *name = class_name(k); - char *name_str; + const char *name_str; if (name != NULL) { name_str = PyUnicode_AsUTF8(name); if (name_str == NULL) @@ -2572,7 +2572,7 @@ type_new(PyTypeObject *metatype, PyObject *args, PyObject *kwds) PyObject *doc = _PyDict_GetItemId(dict, &PyId___doc__); if (doc != NULL && PyUnicode_Check(doc)) { Py_ssize_t len; - char *doc_str; + const char *doc_str; char *tp_doc; doc_str = PyUnicode_AsUTF8(doc); diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c index a49cb9d103e..5c925452e66 100644 --- a/Python/bltinmodule.c +++ b/Python/bltinmodule.c @@ -1893,7 +1893,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt) char *s = NULL; PyObject *stdin_encoding = NULL, *stdin_errors = NULL; PyObject *stdout_encoding = NULL, *stdout_errors = NULL; - char *stdin_encoding_str, *stdin_errors_str; + const char *stdin_encoding_str, *stdin_errors_str; PyObject *result; size_t len; @@ -1914,7 +1914,7 @@ builtin_input_impl(PyObject *module, PyObject *prompt) Py_DECREF(tmp); if (prompt != NULL) { /* We have a prompt, encode it as stdout would */ - char *stdout_encoding_str, *stdout_errors_str; + const char *stdout_encoding_str, *stdout_errors_str; PyObject *stringpo; stdout_encoding = _PyObject_GetAttrId(fout, &PyId_encoding); stdout_errors = _PyObject_GetAttrId(fout, &PyId_errors); diff --git a/Python/ceval.c b/Python/ceval.c index bbbf005f002..b08427d7bd1 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -5440,8 +5440,8 @@ _PyEval_RequestCodeExtraIndex(freefunc free) static void dtrace_function_entry(PyFrameObject *f) { - char* filename; - char* funcname; + const char *filename; + const char *funcname; int lineno; filename = PyUnicode_AsUTF8(f->f_code->co_filename); @@ -5454,8 +5454,8 @@ dtrace_function_entry(PyFrameObject *f) static void dtrace_function_return(PyFrameObject *f) { - char* filename; - char* funcname; + const char *filename; + const char *funcname; int lineno; filename = PyUnicode_AsUTF8(f->f_code->co_filename); @@ -5471,7 +5471,7 @@ maybe_dtrace_line(PyFrameObject *frame, int *instr_lb, int *instr_ub, int *instr_prev) { int line = frame->f_lineno; - char *co_filename, *co_name; + const char *co_filename, *co_name; /* If the last instruction executed isn't in the current instruction window, reset the window. diff --git a/Python/codecs.c b/Python/codecs.c index 96b3611da25..bf152c2e56f 100644 --- a/Python/codecs.c +++ b/Python/codecs.c @@ -1131,7 +1131,7 @@ PyCodec_SurrogatePassErrors(PyObject *exc) PyObject *restuple; PyObject *object; PyObject *encode; - char *encoding; + const char *encoding; int code; int bytelength; Py_ssize_t i; diff --git a/Python/compile.c b/Python/compile.c index a8d7fcd717c..46a40a33690 100644 --- a/Python/compile.c +++ b/Python/compile.c @@ -4039,7 +4039,7 @@ compiler_visit_keyword(struct compiler *c, keyword_ty k) static int expr_constant(struct compiler *c, expr_ty e) { - char *id; + const char *id; switch (e->kind) { case Ellipsis_kind: return 1; diff --git a/Python/getargs.c b/Python/getargs.c index 616c6eb1073..a6636f461b3 100644 --- a/Python/getargs.c +++ b/Python/getargs.c @@ -74,7 +74,7 @@ static const char *converttuple(PyObject *, const char **, va_list *, int, int *, char *, size_t, int, freelist_t *); static const char *convertsimple(PyObject *, const char **, va_list *, int, char *, size_t, freelist_t *); -static Py_ssize_t convertbuffer(PyObject *, void **p, const char **); +static Py_ssize_t convertbuffer(PyObject *, const void **p, const char **); static int getbuffer(PyObject *, Py_buffer *, const char**); static int vgetargskeywords(PyObject *, PyObject *, @@ -625,7 +625,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, const char *format = *p_format; char c = *format++; - char *sarg; + const char *sarg; switch (c) { @@ -897,7 +897,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, } break; } - count = convertbuffer(arg, p, &buf); + count = convertbuffer(arg, (const void **)p, &buf); if (count < 0) return converterr(buf, arg, msgbuf, bufsize); if (*format == '#') { @@ -928,7 +928,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, if (sarg == NULL) return converterr(CONV_UNICODE, arg, msgbuf, bufsize); - PyBuffer_FillInfo(p, arg, sarg, len, 1, 0); + PyBuffer_FillInfo(p, arg, (void *)sarg, len, 1, 0); } else { /* any bytes-like object */ const char *buf; @@ -943,7 +943,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, format++; } else if (*format == '#') { /* a string or read-only bytes-like object */ /* "s#" or "z#" */ - void **p = (void **)va_arg(*p_va, char **); + const void **p = (const void **)va_arg(*p_va, const char **); FETCH_SIZE; if (c == 'z' && arg == Py_None) { @@ -970,7 +970,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, format++; } else { /* "s" or "z" */ - char **p = va_arg(*p_va, char **); + const char **p = va_arg(*p_va, const char **); Py_ssize_t len; sarg = NULL; @@ -1300,7 +1300,7 @@ convertsimple(PyObject *arg, const char **p_format, va_list *p_va, int flags, } static Py_ssize_t -convertbuffer(PyObject *arg, void **p, const char **errmsg) +convertbuffer(PyObject *arg, const void **p, const char **errmsg) { PyBufferProcs *pb = Py_TYPE(arg)->tp_as_buffer; Py_ssize_t count; diff --git a/Python/import.c b/Python/import.c index cd865a54236..6bcb1d79fda 100644 --- a/Python/import.c +++ b/Python/import.c @@ -1035,7 +1035,7 @@ _imp_create_builtin(PyObject *module, PyObject *spec) { struct _inittab *p; PyObject *name; - char *namestr; + const char *namestr; PyObject *mod; name = PyObject_GetAttrString(spec, "name"); diff --git a/Python/pylifecycle.c b/Python/pylifecycle.c index a4f7f823bc6..06030c330a0 100644 --- a/Python/pylifecycle.c +++ b/Python/pylifecycle.c @@ -193,7 +193,8 @@ add_flag(int flag, const char *envs) static char* get_codec_name(const char *encoding) { - char *name_utf8, *name_str; + const char *name_utf8; + char *name_str; PyObject *codec, *name = NULL; codec = _PyCodec_Lookup(encoding); @@ -1284,8 +1285,7 @@ initstdio(void) when import.c tries to write to stderr in verbose mode. */ encoding_attr = PyObject_GetAttrString(std, "encoding"); if (encoding_attr != NULL) { - const char * std_encoding; - std_encoding = PyUnicode_AsUTF8(encoding_attr); + const char *std_encoding = PyUnicode_AsUTF8(encoding_attr); if (std_encoding != NULL) { PyObject *codec_info = _PyCodec_Lookup(std_encoding); Py_XDECREF(codec_info); diff --git a/Python/pythonrun.c b/Python/pythonrun.c index c881f901ab5..b862e2b361c 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -154,7 +154,7 @@ PyRun_InteractiveOneObject(FILE *fp, PyObject *filename, PyCompilerFlags *flags) PyObject *m, *d, *v, *w, *oenc = NULL, *mod_name; mod_ty mod; PyArena *arena; - char *ps1 = "", *ps2 = "", *enc = NULL; + const char *ps1 = "", *ps2 = "", *enc = NULL; int errcode = 0; _Py_IDENTIFIER(encoding); _Py_IDENTIFIER(__main__); @@ -511,8 +511,8 @@ PyErr_Print(void) static void print_error_text(PyObject *f, int offset, PyObject *text_obj) { - char *text; - char *nl; + const char *text; + const char *nl; text = PyUnicode_AsUTF8(text_obj); if (text == NULL) diff --git a/Python/structmember.c b/Python/structmember.c index be2737d405e..e653d0277c1 100644 --- a/Python/structmember.c +++ b/Python/structmember.c @@ -249,7 +249,7 @@ PyMember_SetOne(char *addr, PyMemberDef *l, PyObject *v) Py_XDECREF(oldv); break; case T_CHAR: { - char *string; + const char *string; Py_ssize_t len; string = PyUnicode_AsUTF8AndSize(v, &len); diff --git a/Python/sysmodule.c b/Python/sysmodule.c index 28561ace3b7..db5a48fe57e 100644 --- a/Python/sysmodule.c +++ b/Python/sysmodule.c @@ -108,7 +108,7 @@ sys_displayhook_unencodable(PyObject *outf, PyObject *o) { PyObject *stdout_encoding = NULL; PyObject *encoded, *escaped_str, *repr_str, *buffer, *result; - char *stdout_encoding_str; + const char *stdout_encoding_str; int ret; stdout_encoding = _PyObject_GetAttrId(outf, &PyId_encoding); @@ -2404,7 +2404,7 @@ sys_format(_Py_Identifier *key, FILE *fp, const char *format, va_list va) { PyObject *file, *message; PyObject *error_type, *error_value, *error_traceback; - char *utf8; + const char *utf8; PyErr_Fetch(&error_type, &error_value, &error_traceback); file = _PySys_GetObjectId(key);