Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bpo-1635741: replace UCD_Check with Py_IS_TYPE #22328

Merged
merged 2 commits into from
Sep 23, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 16 additions & 13 deletions Modules/unicodedata.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,10 @@ static PyMemberDef DB_members[] = {

/* forward declaration */
static PyTypeObject UCD_Type;
#define UCD_Check(o) Py_IS_TYPE(o, &UCD_Type)
koubaa marked this conversation as resolved.
Show resolved Hide resolved

// Check if self is an instance of UCD_Type.
// Return 0 if self is NULL (when the PyCapsule C API is used).
#define UCD_Check(self, ucd_type) (self != NULL && Py_IS_TYPE(self, ucd_type))

static PyObject*
new_previous_version(const char*name, const change_record* (*getrecord)(Py_UCS4),
Expand Down Expand Up @@ -135,7 +138,7 @@ unicodedata_UCD_decimal_impl(PyObject *self, int chr,
long rc;
Py_UCS4 c = (Py_UCS4)chr;

if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
const change_record *old = get_old_record(self, c);
if (old->category_changed == 0) {
/* unassigned */
Expand Down Expand Up @@ -223,7 +226,7 @@ unicodedata_UCD_numeric_impl(PyObject *self, int chr,
double rc;
Py_UCS4 c = (Py_UCS4)chr;

if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
const change_record *old = get_old_record(self, c);
if (old->category_changed == 0) {
/* unassigned */
Expand Down Expand Up @@ -268,7 +271,7 @@ unicodedata_UCD_category_impl(PyObject *self, int chr)
int index;
Py_UCS4 c = (Py_UCS4)chr;
index = (int) _getrecord_ex(c)->category;
if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
const change_record *old = get_old_record(self, c);
if (old->category_changed != 0xFF)
index = old->category_changed;
Expand All @@ -295,7 +298,7 @@ unicodedata_UCD_bidirectional_impl(PyObject *self, int chr)
int index;
Py_UCS4 c = (Py_UCS4)chr;
index = (int) _getrecord_ex(c)->bidirectional;
if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
const change_record *old = get_old_record(self, c);
if (old->category_changed == 0)
index = 0; /* unassigned */
Expand Down Expand Up @@ -324,7 +327,7 @@ unicodedata_UCD_combining_impl(PyObject *self, int chr)
int index;
Py_UCS4 c = (Py_UCS4)chr;
index = (int) _getrecord_ex(c)->combining;
if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
const change_record *old = get_old_record(self, c);
if (old->category_changed == 0)
index = 0; /* unassigned */
Expand Down Expand Up @@ -352,7 +355,7 @@ unicodedata_UCD_mirrored_impl(PyObject *self, int chr)
int index;
Py_UCS4 c = (Py_UCS4)chr;
index = (int) _getrecord_ex(c)->mirrored;
if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
const change_record *old = get_old_record(self, c);
if (old->category_changed == 0)
index = 0; /* unassigned */
Expand All @@ -379,7 +382,7 @@ unicodedata_UCD_east_asian_width_impl(PyObject *self, int chr)
int index;
Py_UCS4 c = (Py_UCS4)chr;
index = (int) _getrecord_ex(c)->east_asian_width;
if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
const change_record *old = get_old_record(self, c);
if (old->category_changed == 0)
index = 0; /* unassigned */
Expand Down Expand Up @@ -413,7 +416,7 @@ unicodedata_UCD_decomposition_impl(PyObject *self, int chr)

code = (int)c;

if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
const change_record *old = get_old_record(self, c);
if (old->category_changed == 0)
return PyUnicode_FromString(""); /* unassigned */
Expand Down Expand Up @@ -460,7 +463,7 @@ get_decomp_record(PyObject *self, Py_UCS4 code, int *index, int *prefix, int *co
{
if (code >= 0x110000) {
*index = 0;
} else if (self && UCD_Check(self) &&
} else if (UCD_Check(self, &UCD_Type) &&
get_old_record(self, code)->category_changed==0) {
/* unassigned in old version */
*index = 0;
Expand Down Expand Up @@ -558,7 +561,7 @@ nfd_nfkd(PyObject *self, PyObject *input, int k)
continue;
}
/* normalization changes */
if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
Py_UCS4 value = ((PreviousDBVersion*)self)->normalization(code);
if (value != 0) {
stack[stackptr++] = value;
Expand Down Expand Up @@ -799,7 +802,7 @@ is_normalized_quickcheck(PyObject *self, PyObject *input,
{
/* An older version of the database is requested, quickchecks must be
disabled. */
if (self && UCD_Check(self))
if (UCD_Check(self, &UCD_Type))
return NO;

Py_ssize_t i, len;
Expand Down Expand Up @@ -1066,7 +1069,7 @@ _getucname(PyObject *self, Py_UCS4 code, char* buffer, int buflen,
if (!with_alias_and_seq && (IS_ALIAS(code) || IS_NAMED_SEQ(code)))
return 0;

if (self && UCD_Check(self)) {
if (UCD_Check(self, &UCD_Type)) {
/* in 3.2.0 there are no aliases and named sequences */
const change_record *old;
if (IS_ALIAS(code) || IS_NAMED_SEQ(code))
Expand Down