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[] = {
483483static PyObject *
484484StringDType_richcompare (PyObject * self , PyObject * other , int op )
485485{
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 )) {
490489 Py_INCREF (Py_NotImplemented );
491490 return Py_NotImplemented ;
492491 }
493492
493+ // we know both are instances of StringDType so this is safe
494494 StringDTypeObject * sself = (StringDTypeObject * )self ;
495495 StringDTypeObject * sother = (StringDTypeObject * )other ;
496496
497497 int eq = (sself -> na_object == sother -> na_object ) &&
498498 (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 ;
504503 }
505- if (op == Py_NE ) {
506- if (eq ) {
507- return Py_False ;
508- }
509- return Py_True ;
504+ else {
505+ ret = Py_False ;
510506 }
511507
512- Py_INCREF (Py_NotImplemented );
513- return Py_NotImplemented ;
508+ Py_INCREF (ret );
509+ return ret ;
514510}
515511
516512/*
You can’t perform that action at this time.
0 commit comments