File tree Expand file tree Collapse file tree 1 file changed +12
-16
lines changed
stringdtype/stringdtype/src Expand file tree Collapse file tree 1 file changed +12
-16
lines changed Original file line number Diff line number Diff line change @@ -483,34 +483,30 @@ static PyMemberDef StringDType_members[] = {
483
483
static PyObject *
484
484
StringDType_richcompare (PyObject * self , PyObject * other , int op )
485
485
{
486
- PyTypeObject * stype = Py_TYPE (self );
487
- PyTypeObject * otype = Py_TYPE (other );
488
-
489
- if (stype != otype ) {
486
+ // this isn't very friendly to subclasses
487
+ if (!((op == Py_EQ ) || (op == Py_NE )) ||
488
+ (Py_TYPE (other ) != (PyTypeObject * )& StringDType )) {
490
489
Py_INCREF (Py_NotImplemented );
491
490
return Py_NotImplemented ;
492
491
}
493
492
493
+ // we know both are instances of StringDType so this is safe
494
494
StringDTypeObject * sself = (StringDTypeObject * )self ;
495
495
StringDTypeObject * sother = (StringDTypeObject * )other ;
496
496
497
497
int eq = (sself -> na_object == sother -> na_object ) &&
498
498
(sself -> coerce == sother -> coerce );
499
- if (op == Py_EQ ) {
500
- if (eq ) {
501
- return Py_True ;
502
- }
503
- return Py_False ;
499
+
500
+ PyObject * ret = Py_NotImplemented ;
501
+ if ((op == Py_EQ && eq ) || (op == Py_NE && !eq )) {
502
+ ret = Py_True ;
504
503
}
505
- if (op == Py_NE ) {
506
- if (eq ) {
507
- return Py_False ;
508
- }
509
- return Py_True ;
504
+ else {
505
+ ret = Py_False ;
510
506
}
511
507
512
- Py_INCREF (Py_NotImplemented );
513
- return Py_NotImplemented ;
508
+ Py_INCREF (ret );
509
+ return ret ;
514
510
}
515
511
516
512
/*
You can’t perform that action at this time.
0 commit comments