Fix range comparision operators implementation
diff --git a/src/fcrange.c b/src/fcrange.c
index f70226c..8689930 100644
--- a/src/fcrange.c
+++ b/src/fcrange.c
@@ -96,9 +96,6 @@
FcBool
FcRangeIsInRange (const FcRange *a, const FcRange *b)
{
- if (!a || !b)
- return FcFalse;
-
return a->begin >= b->begin && a->end <= b->end;
}
@@ -107,20 +104,22 @@
{
switch ((int) op) {
case FcOpEqual:
+ return a->begin == b->begin && a->end == b->end;
case FcOpContains:
case FcOpListing:
return FcRangeIsInRange (a, b);
case FcOpNotEqual:
+ return a->begin != b->begin || a->end != b->end;
case FcOpNotContains:
return !FcRangeIsInRange (a, b);
case FcOpLess:
- return a->begin < b->begin;
+ return a->end < b->begin;
case FcOpLessEqual:
- return a->begin <= b->begin;
+ return a->end <= b->begin;
case FcOpMore:
- return a->end > b->end;
+ return a->begin > b->end;
case FcOpMoreEqual:
- return a->end >= b->end;
+ return a->begin >= b->end;
default:
break;
}