diff options
Diffstat (limited to 'src/fccharset.c')
-rw-r--r-- | src/fccharset.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/fccharset.c b/src/fccharset.c index 1c0ebdd3..d87a720a 100644 --- a/src/fccharset.c +++ b/src/fccharset.c @@ -596,6 +596,9 @@ FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b) { an = a->numbers[ai]; bn = b->numbers[bi]; + /* + * Check matching pages + */ if (an == bn) { FcChar32 *am = a->leaves[ai]->map; @@ -604,6 +607,9 @@ FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b) if (am != bm) { int i = 256/32; + /* + * Does am have any bits not in bm? + */ while (i--) if (*am++ & ~*bm++) return FcFalse; @@ -611,6 +617,9 @@ FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b) ai++; bi++; } + /* + * Does a have any pages not in b? + */ else if (an < bn) return FcFalse; else @@ -618,6 +627,9 @@ FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b) int low = bi + 1; int high = b->num - 1; + /* + * Search for page 'an' in 'b' + */ while (low <= high) { int mid = (low + high) >> 1; @@ -637,6 +649,9 @@ FcCharSetIsSubset (const FcCharSet *a, const FcCharSet *b) bi++; } } + /* + * did we look at every page? + */ return ai >= a->num; } |