From be8b631b7a587aa781245e14c8cca32970e1be5b Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 12 Jun 2021 16:11:59 +0300 Subject: Add more const modifiers. (GH-26691) --- Include/cpython/code.h | 6 +++--- Include/internal/pycore_code.h | 4 ++-- Modules/_zoneinfo.c | 4 ++-- Objects/codeobject.c | 6 +++--- Objects/unicodeobject.c | 2 +- Parser/pegen.c | 14 +++++++------- Parser/pegen.h | 6 +++--- Parser/string_parser.c | 10 +++++----- Python/specialize.c | 2 +- 9 files changed, 27 insertions(+), 27 deletions(-) diff --git a/Include/cpython/code.h b/Include/cpython/code.h index a3db7d9..f6e789d 100644 --- a/Include/cpython/code.h +++ b/Include/cpython/code.h @@ -196,8 +196,8 @@ PyAPI_FUNC(int) PyCode_Addr2Line(PyCodeObject *, int); /* for internal use only */ struct _opaque { int computed_line; - char *lo_next; - char *limit; + const char *lo_next; + const char *limit; }; typedef struct _line_offsets { @@ -234,7 +234,7 @@ PyAPI_FUNC(int) _PyCode_SetExtra(PyObject *code, Py_ssize_t index, int _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds); /** Out of process API for initializing the line number table. */ -void PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range); +void PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range); /** API for traversing the line number table. */ int PyLineTable_NextAddressRange(PyCodeAddressRange *range); diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.h index 05ba522..bfc2deb 100644 --- a/Include/internal/pycore_code.h +++ b/Include/internal/pycore_code.h @@ -79,7 +79,7 @@ typedef union _cache_or_instruction { * The zeroth entry immediately precedes the instructions. */ static inline SpecializedCacheEntry * -_GetSpecializedCacheEntry(_Py_CODEUNIT *first_instr, Py_ssize_t n) +_GetSpecializedCacheEntry(const _Py_CODEUNIT *first_instr, Py_ssize_t n) { SpecializedCacheOrInstruction *last_cache_plus_one = (SpecializedCacheOrInstruction *)first_instr; assert(&last_cache_plus_one->code[0] == first_instr); @@ -126,7 +126,7 @@ offset_from_oparg_and_nexti(int oparg, int nexti) * nexti is used as it corresponds to the instruction pointer in the interpreter. * This doesn't check that an entry has been allocated for that instruction. */ static inline SpecializedCacheEntry * -_GetSpecializedCacheEntryForInstruction(_Py_CODEUNIT *first_instr, int nexti, int oparg) +_GetSpecializedCacheEntryForInstruction(const _Py_CODEUNIT *first_instr, int nexti, int oparg) { return _GetSpecializedCacheEntry( first_instr, diff --git a/Modules/_zoneinfo.c b/Modules/_zoneinfo.c index 755442f..c722330 100644 --- a/Modules/_zoneinfo.c +++ b/Modules/_zoneinfo.c @@ -1468,11 +1468,11 @@ parse_tz_str(PyObject *tz_str_obj, _tzrule *out) long std_offset = 1 << 20; long dst_offset = 1 << 20; - char *tz_str = PyBytes_AsString(tz_str_obj); + const char *tz_str = PyBytes_AsString(tz_str_obj); if (tz_str == NULL) { return -1; } - char *p = tz_str; + const char *p = tz_str; // Read the `std` abbreviation, which must be at least 3 characters long. Py_ssize_t num_chars = parse_abbr(p, &std_abbr); diff --git a/Objects/codeobject.c b/Objects/codeobject.c index 1a99ec3..701a37d 100644 --- a/Objects/codeobject.c +++ b/Objects/codeobject.c @@ -627,7 +627,7 @@ PyCode_Addr2Line(PyCodeObject *co, int addrq) } void -PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range) +PyLineTable_InitAddressRange(const char *linetable, Py_ssize_t length, int firstlineno, PyCodeAddressRange *range) { range->opaque.lo_next = linetable; range->opaque.limit = range->opaque.lo_next + length; @@ -640,7 +640,7 @@ PyLineTable_InitAddressRange(char *linetable, Py_ssize_t length, int firstlineno int _PyCode_InitAddressRange(PyCodeObject* co, PyCodeAddressRange *bounds) { - char *linetable = PyBytes_AS_STRING(co->co_linetable); + const char *linetable = PyBytes_AS_STRING(co->co_linetable); Py_ssize_t length = PyBytes_GET_SIZE(co->co_linetable); PyLineTable_InitAddressRange(linetable, length, co->co_firstlineno, bounds); return bounds->ar_line; @@ -926,7 +926,7 @@ _PyCode_InitOpcache(PyCodeObject *co) return -1; } - _Py_CODEUNIT *opcodes = (_Py_CODEUNIT*)PyBytes_AS_STRING(co->co_code); + const _Py_CODEUNIT *opcodes = (const _Py_CODEUNIT*)PyBytes_AS_STRING(co->co_code); Py_ssize_t opts = 0; for (Py_ssize_t i = 0; i < co_size;) { diff --git a/Objects/unicodeobject.c b/Objects/unicodeobject.c index 82f0b1a..c316caf 100644 --- a/Objects/unicodeobject.c +++ b/Objects/unicodeobject.c @@ -658,7 +658,7 @@ unicode_result_ready(PyObject *unicode) if (length == 1) { int kind = PyUnicode_KIND(unicode); if (kind == PyUnicode_1BYTE_KIND) { - Py_UCS1 *data = PyUnicode_1BYTE_DATA(unicode); + const Py_UCS1 *data = PyUnicode_1BYTE_DATA(unicode); Py_UCS1 ch = data[0]; struct _Py_unicode_state *state = get_unicode_state(); PyObject *latin1_char = state->latin1[ch]; diff --git a/Parser/pegen.c b/Parser/pegen.c index 82f840c..1941244 100644 --- a/Parser/pegen.c +++ b/Parser/pegen.c @@ -7,7 +7,7 @@ #include "string_parser.h" PyObject * -_PyPegen_new_type_comment(Parser *p, char *s) +_PyPegen_new_type_comment(Parser *p, const char *s) { PyObject *res = PyUnicode_DecodeUTF8(s, strlen(s), NULL); if (res == NULL) { @@ -26,7 +26,7 @@ _PyPegen_add_type_comment_to_arg(Parser *p, arg_ty a, Token *tc) if (tc == NULL) { return a; } - char *bytes = PyBytes_AsString(tc->bytes); + const char *bytes = PyBytes_AsString(tc->bytes); if (bytes == NULL) { return NULL; } @@ -66,7 +66,7 @@ _PyPegen_check_barry_as_flufl(Parser *p, Token* t) { assert(t->bytes != NULL); assert(t->type == NOTEQUAL); - char* tok_str = PyBytes_AS_STRING(t->bytes); + const char* tok_str = PyBytes_AS_STRING(t->bytes); if (p->flags & PyPARSE_BARRY_AS_BDFL && strcmp(tok_str, "<>") != 0) { RAISE_SYNTAX_ERROR("with Barry as BDFL, use '<>' instead of '!='"); return -1; @@ -78,7 +78,7 @@ _PyPegen_check_barry_as_flufl(Parser *p, Token* t) { } PyObject * -_PyPegen_new_identifier(Parser *p, char *n) +_PyPegen_new_identifier(Parser *p, const char *n) { PyObject *id = PyUnicode_DecodeUTF8(n, strlen(n), NULL); if (!id) { @@ -911,7 +911,7 @@ _PyPegen_expect_soft_keyword(Parser *p, const char *keyword) if (t->type != NAME) { return NULL; } - char *s = PyBytes_AsString(t->bytes); + const char *s = PyBytes_AsString(t->bytes); if (!s) { p->error_indicator = 1; return NULL; @@ -942,7 +942,7 @@ _PyPegen_name_from_token(Parser *p, Token* t) if (t == NULL) { return NULL; } - char* s = PyBytes_AsString(t->bytes); + const char *s = PyBytes_AsString(t->bytes); if (!s) { p->error_indicator = 1; return NULL; @@ -1068,7 +1068,7 @@ _PyPegen_number_token(Parser *p) return NULL; } - char *num_raw = PyBytes_AsString(t->bytes); + const char *num_raw = PyBytes_AsString(t->bytes); if (num_raw == NULL) { p->error_indicator = 1; return NULL; diff --git a/Parser/pegen.h b/Parser/pegen.h index 1540da0..161a498 100644 --- a/Parser/pegen.h +++ b/Parser/pegen.h @@ -202,7 +202,7 @@ CHECK_CALL_NULL_ALLOWED(Parser *p, void *result) #define CHECK(type, result) ((type) CHECK_CALL(p, result)) #define CHECK_NULL_ALLOWED(type, result) ((type) CHECK_CALL_NULL_ALLOWED(p, result)) -PyObject *_PyPegen_new_type_comment(Parser *, char *); +PyObject *_PyPegen_new_type_comment(Parser *, const char *); Py_LOCAL_INLINE(PyObject *) NEW_TYPE_COMMENT(Parser *p, Token *tc) @@ -210,7 +210,7 @@ NEW_TYPE_COMMENT(Parser *p, Token *tc) if (tc == NULL) { return NULL; } - char *bytes = PyBytes_AsString(tc->bytes); + const char *bytes = PyBytes_AsString(tc->bytes); if (bytes == NULL) { goto error; } @@ -242,7 +242,7 @@ INVALID_VERSION_CHECK(Parser *p, int version, char *msg, void *node) #define CHECK_VERSION(type, version, msg, node) ((type) INVALID_VERSION_CHECK(p, version, msg, node)) arg_ty _PyPegen_add_type_comment_to_arg(Parser *, arg_ty, Token *); -PyObject *_PyPegen_new_identifier(Parser *, char *); +PyObject *_PyPegen_new_identifier(Parser *, const char *); Parser *_PyPegen_Parser_New(struct tok_state *, int, int, int, int *, PyArena *); void _PyPegen_Parser_Free(Parser *); mod_ty _PyPegen_run_parser_from_file_pointer(FILE *, int, PyObject *, const char *, diff --git a/Parser/string_parser.c b/Parser/string_parser.c index fa41a36..66405b2 100644 --- a/Parser/string_parser.c +++ b/Parser/string_parser.c @@ -87,7 +87,7 @@ decode_unicode_with_escapes(Parser *parser, const char *s, size_t len, Token *t) if (*s & 0x80) { PyObject *w; int kind; - void *data; + const void *data; Py_ssize_t w_len; Py_ssize_t i; w = decode_utf8(&s, end); @@ -288,17 +288,17 @@ fstring_find_expr_location(Token *parent, char *expr_str, int *p_lines, int *p_c *p_lines = 0; *p_cols = 0; if (parent && parent->bytes) { - char *parent_str = PyBytes_AsString(parent->bytes); + const char *parent_str = PyBytes_AsString(parent->bytes); if (!parent_str) { return false; } - char *substr = strstr(parent_str, expr_str); + const char *substr = strstr(parent_str, expr_str); if (substr) { // The following is needed, in order to correctly shift the column // offset, in the case that (disregarding any whitespace) a newline // immediately follows the opening curly brace of the fstring expression. bool newline_after_brace = 1; - char *start = substr + 1; + const char *start = substr + 1; while (start && *start != '}' && *start != '\n') { if (*start != ' ' && *start != '\t' && *start != '\f') { newline_after_brace = 0; @@ -318,7 +318,7 @@ fstring_find_expr_location(Token *parent, char *expr_str, int *p_lines, int *p_c } /* adjust the start based on the number of newlines encountered before the f-string expression */ - for (char* p = parent_str; p < substr; p++) { + for (const char *p = parent_str; p < substr; p++) { if (*p == '\n') { (*p_lines)++; } diff --git a/Python/specialize.c b/Python/specialize.c index 1801e66..d82122d 100644 --- a/Python/specialize.c +++ b/Python/specialize.c @@ -120,7 +120,7 @@ oparg_from_instruction_and_update_offset(int index, int opcode, int original_opa } static int -entries_needed(_Py_CODEUNIT *code, int len) +entries_needed(const _Py_CODEUNIT *code, int len) { int cache_offset = 0; int previous_opcode = -1; -- cgit v0.12