[Python-checkins] Add more const modifiers. (GH-26691)

serhiy-storchaka webhook-mailer at python.org
Sat Jun 12 09:12:07 EDT 2021


https://github.com/python/cpython/commit/be8b631b7a587aa781245e14c8cca32970e1be5b
commit: be8b631b7a587aa781245e14c8cca32970e1be5b
branch: main
author: Serhiy Storchaka <storchaka at gmail.com>
committer: serhiy-storchaka <storchaka at gmail.com>
date: 2021-06-12T16:11:59+03:00
summary:

Add more const modifiers. (GH-26691)

files:
M Include/cpython/code.h
M Include/internal/pycore_code.h
M Modules/_zoneinfo.c
M Objects/codeobject.c
M Objects/unicodeobject.c
M Parser/pegen.c
M Parser/pegen.h
M Parser/string_parser.c
M Python/specialize.c

diff --git a/Include/cpython/code.h b/Include/cpython/code.h
index a3db7d9d5eff7a..f6e789dd4d8cfe 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 05ba522969a3d0..bfc2deb1b60424 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 755442f857652b..c722330ee491a9 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 1a99ec361e6b5b..701a37d7392fbe 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 82f0b1afed444c..c316cafdc7ffc5 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 82f840c605073b..19412446b118ab 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 1540da030e9efc..161a49816d6c03 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 fa41a360c3fb5b..66405b26f37e4c 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 1801e6620f1e3c..d82122dfad6201 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;



More information about the Python-checkins mailing list