bpo-46670: Define all macros for stringlib (GH-31176)

bytesobject.c, bytearrayobject.c and unicodeobject.c now define all
macros used by stringlib, to avoid using undefined macros.
Fix "gcc -Wundef" warnings.
This commit is contained in:
Victor Stinner 2022-02-07 01:26:58 +01:00 committed by GitHub
parent 16f96a4cf9
commit 097f74a5a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 24 additions and 17 deletions

View File

@ -1074,6 +1074,7 @@ bytearray_dealloc(PyByteArrayObject *self)
/* -------------------------------------------------------------------- */ /* -------------------------------------------------------------------- */
/* Methods */ /* Methods */
#define STRINGLIB_IS_UNICODE 0
#define FASTSEARCH fastsearch #define FASTSEARCH fastsearch
#define STRINGLIB(F) stringlib_##F #define STRINGLIB(F) stringlib_##F
#define STRINGLIB_CHAR char #define STRINGLIB_CHAR char

View File

@ -1235,6 +1235,7 @@ PyBytes_AsStringAndSize(PyObject *obj,
#define STRINGLIB_GET_EMPTY() bytes_get_empty() #define STRINGLIB_GET_EMPTY() bytes_get_empty()
#include "stringlib/stringdefs.h" #include "stringlib/stringdefs.h"
#define STRINGLIB_MUTABLE 0
#include "stringlib/fastsearch.h" #include "stringlib/fastsearch.h"
#include "stringlib/count.h" #include "stringlib/count.h"

View File

@ -20,6 +20,7 @@
#define STRINGLIB_NEW(STR,LEN) _PyUnicode_FromASCII((const char*)(STR),(LEN)) #define STRINGLIB_NEW(STR,LEN) _PyUnicode_FromASCII((const char*)(STR),(LEN))
#define STRINGLIB_CHECK PyUnicode_Check #define STRINGLIB_CHECK PyUnicode_Check
#define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact #define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact
#define STRINGLIB_MUTABLE 0
#define STRINGLIB_TOSTR PyObject_Str #define STRINGLIB_TOSTR PyObject_Str
#define STRINGLIB_TOASCII PyObject_ASCII #define STRINGLIB_TOASCII PyObject_ASCII

View File

@ -32,7 +32,7 @@ STRINGLIB(bytes_join)(PyObject *sep, PyObject *iterable)
Py_DECREF(seq); Py_DECREF(seq);
return STRINGLIB_NEW(NULL, 0); return STRINGLIB_NEW(NULL, 0);
} }
#ifndef STRINGLIB_MUTABLE #if !STRINGLIB_MUTABLE
if (seqlen == 1) { if (seqlen == 1) {
item = PySequence_Fast_GET_ITEM(seq, 0); item = PySequence_Fast_GET_ITEM(seq, 0);
if (STRINGLIB_CHECK_EXACT(item)) { if (STRINGLIB_CHECK_EXACT(item)) {

View File

@ -70,7 +70,7 @@ STRINGLIB(split_whitespace)(PyObject* str_obj,
j = i; i++; j = i; i++;
while (i < str_len && !STRINGLIB_ISSPACE(str[i])) while (i < str_len && !STRINGLIB_ISSPACE(str[i]))
i++; i++;
#ifndef STRINGLIB_MUTABLE #if !STRINGLIB_MUTABLE
if (j == 0 && i == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { if (j == 0 && i == str_len && STRINGLIB_CHECK_EXACT(str_obj)) {
/* No whitespace in str_obj, so just use it as list[0] */ /* No whitespace in str_obj, so just use it as list[0] */
Py_INCREF(str_obj); Py_INCREF(str_obj);
@ -122,7 +122,7 @@ STRINGLIB(split_char)(PyObject* str_obj,
} }
} }
} }
#ifndef STRINGLIB_MUTABLE #if !STRINGLIB_MUTABLE
if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
/* ch not in str_obj, so just use str_obj as list[0] */ /* ch not in str_obj, so just use str_obj as list[0] */
Py_INCREF(str_obj); Py_INCREF(str_obj);
@ -170,7 +170,7 @@ STRINGLIB(split)(PyObject* str_obj,
SPLIT_ADD(str, i, j); SPLIT_ADD(str, i, j);
i = j + sep_len; i = j + sep_len;
} }
#ifndef STRINGLIB_MUTABLE #if !STRINGLIB_MUTABLE
if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
/* No match in str_obj, so just use it as list[0] */ /* No match in str_obj, so just use it as list[0] */
Py_INCREF(str_obj); Py_INCREF(str_obj);
@ -209,7 +209,7 @@ STRINGLIB(rsplit_whitespace)(PyObject* str_obj,
j = i; i--; j = i; i--;
while (i >= 0 && !STRINGLIB_ISSPACE(str[i])) while (i >= 0 && !STRINGLIB_ISSPACE(str[i]))
i--; i--;
#ifndef STRINGLIB_MUTABLE #if !STRINGLIB_MUTABLE
if (j == str_len - 1 && i < 0 && STRINGLIB_CHECK_EXACT(str_obj)) { if (j == str_len - 1 && i < 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
/* No whitespace in str_obj, so just use it as list[0] */ /* No whitespace in str_obj, so just use it as list[0] */
Py_INCREF(str_obj); Py_INCREF(str_obj);
@ -262,7 +262,7 @@ STRINGLIB(rsplit_char)(PyObject* str_obj,
} }
} }
} }
#ifndef STRINGLIB_MUTABLE #if !STRINGLIB_MUTABLE
if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
/* ch not in str_obj, so just use str_obj as list[0] */ /* ch not in str_obj, so just use str_obj as list[0] */
Py_INCREF(str_obj); Py_INCREF(str_obj);
@ -311,7 +311,7 @@ STRINGLIB(rsplit)(PyObject* str_obj,
SPLIT_ADD(str, pos + sep_len, j); SPLIT_ADD(str, pos + sep_len, j);
j = pos; j = pos;
} }
#ifndef STRINGLIB_MUTABLE #if !STRINGLIB_MUTABLE
if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) { if (count == 0 && STRINGLIB_CHECK_EXACT(str_obj)) {
/* No match in str_obj, so just use it as list[0] */ /* No match in str_obj, so just use it as list[0] */
Py_INCREF(str_obj); Py_INCREF(str_obj);
@ -370,7 +370,7 @@ STRINGLIB(splitlines)(PyObject* str_obj,
if (keepends) if (keepends)
eol = i; eol = i;
} }
#ifndef STRINGLIB_MUTABLE #if !STRINGLIB_MUTABLE
if (j == 0 && eol == str_len && STRINGLIB_CHECK_EXACT(str_obj)) { if (j == 0 && eol == str_len && STRINGLIB_CHECK_EXACT(str_obj)) {
/* No linebreak in str_obj, so just use it as list[0] */ /* No linebreak in str_obj, so just use it as list[0] */
if (PyList_Append(list, str_obj)) if (PyList_Append(list, str_obj))

View File

@ -20,6 +20,7 @@
#define STRINGLIB_NEW _PyUnicode_FromUCS1 #define STRINGLIB_NEW _PyUnicode_FromUCS1
#define STRINGLIB_CHECK PyUnicode_Check #define STRINGLIB_CHECK PyUnicode_Check
#define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact #define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact
#define STRINGLIB_MUTABLE 0
#define STRINGLIB_TOSTR PyObject_Str #define STRINGLIB_TOSTR PyObject_Str
#define STRINGLIB_TOASCII PyObject_ASCII #define STRINGLIB_TOASCII PyObject_ASCII

View File

@ -20,6 +20,7 @@
#define STRINGLIB_NEW _PyUnicode_FromUCS2 #define STRINGLIB_NEW _PyUnicode_FromUCS2
#define STRINGLIB_CHECK PyUnicode_Check #define STRINGLIB_CHECK PyUnicode_Check
#define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact #define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact
#define STRINGLIB_MUTABLE 0
#define STRINGLIB_TOSTR PyObject_Str #define STRINGLIB_TOSTR PyObject_Str
#define STRINGLIB_TOASCII PyObject_ASCII #define STRINGLIB_TOASCII PyObject_ASCII

View File

@ -20,6 +20,7 @@
#define STRINGLIB_NEW _PyUnicode_FromUCS4 #define STRINGLIB_NEW _PyUnicode_FromUCS4
#define STRINGLIB_CHECK PyUnicode_Check #define STRINGLIB_CHECK PyUnicode_Check
#define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact #define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact
#define STRINGLIB_MUTABLE 0
#define STRINGLIB_TOSTR PyObject_Str #define STRINGLIB_TOSTR PyObject_Str
#define STRINGLIB_TOASCII PyObject_ASCII #define STRINGLIB_TOASCII PyObject_ASCII

View File

@ -7,4 +7,4 @@
#undef STRINGLIB_LEN #undef STRINGLIB_LEN
#undef STRINGLIB_NEW #undef STRINGLIB_NEW
#undef STRINGLIB_IS_UNICODE #undef STRINGLIB_IS_UNICODE
#undef STRINGLIB_MUTABLE

View File

@ -22,6 +22,7 @@
#define STRINGLIB_NEW PyUnicode_FromUnicode #define STRINGLIB_NEW PyUnicode_FromUnicode
#define STRINGLIB_CHECK PyUnicode_Check #define STRINGLIB_CHECK PyUnicode_Check
#define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact #define STRINGLIB_CHECK_EXACT PyUnicode_CheckExact
#define STRINGLIB_MUTABLE 0
#define STRINGLIB_TOSTR PyObject_Str #define STRINGLIB_TOSTR PyObject_Str
#define STRINGLIB_TOASCII PyObject_ASCII #define STRINGLIB_TOASCII PyObject_ASCII