]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-124064: Fix -Wconversion warnings in Parser/pegen.c (#124181)
authorVictor Stinner <vstinner@python.org>
Tue, 17 Sep 2024 15:58:43 +0000 (17:58 +0200)
committerGitHub <noreply@github.com>
Tue, 17 Sep 2024 15:58:43 +0000 (15:58 +0000)
Parser/pegen.c
Tools/build/.warningignore_macos
Tools/build/.warningignore_ubuntu

index 0c3c4689dd7ce6457f7cc32ab1964e1c7a531e72..bb98e7b184a4dca612de6e50694afda0bfb34829 100644 (file)
@@ -22,7 +22,7 @@ _PyPegen_interactive_exit(Parser *p)
 Py_ssize_t
 _PyPegen_byte_offset_to_character_offset_line(PyObject *line, Py_ssize_t col_offset, Py_ssize_t end_col_offset)
 {
-    const char *data = PyUnicode_AsUTF8(line);
+    const unsigned char *data = (const unsigned char*)PyUnicode_AsUTF8(line);
 
     Py_ssize_t len = 0;
     while (col_offset < end_col_offset) {
@@ -47,7 +47,7 @@ _PyPegen_byte_offset_to_character_offset_line(PyObject *line, Py_ssize_t col_off
 Py_ssize_t
 _PyPegen_byte_offset_to_character_offset_raw(const char* str, Py_ssize_t col_offset)
 {
-    Py_ssize_t len = strlen(str);
+    Py_ssize_t len = (Py_ssize_t)strlen(str);
     if (col_offset > len + 1) {
         col_offset = len + 1;
     }
@@ -158,7 +158,7 @@ growable_comment_array_deallocate(growable_comment_array *arr) {
 static int
 _get_keyword_or_name_type(Parser *p, struct token *new_token)
 {
-    int name_len = new_token->end_col_offset - new_token->col_offset;
+    Py_ssize_t name_len = new_token->end_col_offset - new_token->col_offset;
     assert(name_len > 0);
 
     if (name_len >= p->n_keyword_lists ||
@@ -167,7 +167,7 @@ _get_keyword_or_name_type(Parser *p, struct token *new_token)
         return NAME;
     }
     for (KeywordToken *k = p->keywords[name_len]; k != NULL && k->type != -1; k++) {
-        if (strncmp(k->str, new_token->start, name_len) == 0) {
+        if (strncmp(k->str, new_token->start, (size_t)name_len) == 0) {
             return k->type;
         }
     }
@@ -218,7 +218,7 @@ initialize_token(Parser *p, Token *parser_token, struct token *new_token, int to
 static int
 _resize_tokens_array(Parser *p) {
     int newsize = p->size * 2;
-    Token **new_tokens = PyMem_Realloc(p->tokens, newsize * sizeof(Token *));
+    Token **new_tokens = PyMem_Realloc(p->tokens, (size_t)newsize * sizeof(Token *));
     if (new_tokens == NULL) {
         PyErr_NoMemory();
         return -1;
@@ -247,12 +247,12 @@ _PyPegen_fill_token(Parser *p)
     // Record and skip '# type: ignore' comments
     while (type == TYPE_IGNORE) {
         Py_ssize_t len = new_token.end_col_offset - new_token.col_offset;
-        char *tag = PyMem_Malloc(len + 1);
+        char *tag = PyMem_Malloc((size_t)len + 1);
         if (tag == NULL) {
             PyErr_NoMemory();
             goto error;
         }
-        strncpy(tag, new_token.start, len);
+        strncpy(tag, new_token.start, (size_t)len);
         tag[len] = '\0';
         // Ownership of tag passes to the growable array
         if (!growable_comment_array_add(&p->type_ignore_comments, p->tok->lineno, tag)) {
@@ -505,7 +505,7 @@ _PyPegen_get_last_nonnwhitespace_token(Parser *p)
 PyObject *
 _PyPegen_new_identifier(Parser *p, const char *n)
 {
-    PyObject *id = PyUnicode_DecodeUTF8(n, strlen(n), NULL);
+    PyObject *id = PyUnicode_DecodeUTF8(n, (Py_ssize_t)strlen(n), NULL);
     if (!id) {
         goto error;
     }
@@ -601,7 +601,7 @@ expr_ty _PyPegen_soft_keyword_token(Parser *p) {
     Py_ssize_t size;
     PyBytes_AsStringAndSize(t->bytes, &the_token, &size);
     for (char **keyword = p->soft_keywords; *keyword != NULL; keyword++) {
-        if (strncmp(*keyword, the_token, size) == 0) {
+        if (strncmp(*keyword, the_token, (size_t)size) == 0) {
             return _PyPegen_name_from_token(p, t);
         }
     }
index 541e189ec5b342c26855f452f47a5b854b970704..2ed02ba6b634b0eb9700569da582cc66a19d052c 100644 (file)
@@ -173,7 +173,6 @@ Parser/action_helpers.c 4
 Parser/lexer/buffer.c 1
 Parser/lexer/lexer.c 12
 Parser/parser.c 116
-Parser/pegen.c 7
 Parser/string_parser.c 7
 Parser/tokenizer/file_tokenizer.c 8
 Parser/tokenizer/helpers.c 7
index 03538f66f882127259ba7b1288824d4237eb2c4c..d010152a229fae51622cc7a2020bdc738a590ba5 100644 (file)
@@ -199,7 +199,6 @@ Parser/action_helpers.c 3
 Parser/lexer/buffer.c 1
 Parser/lexer/lexer.c 14
 Parser/parser.c 116
-Parser/pegen.c 8
 Parser/string_parser.c 7
 Parser/tokenizer/file_tokenizer.c 9
 Parser/tokenizer/helpers.c 7