diff options
author | Werner Lemberg <wl@gnu.org> | 2016-03-29 09:13:13 +0200 |
---|---|---|
committer | Werner Lemberg <wl@gnu.org> | 2016-03-29 09:13:13 +0200 |
commit | 351fc4b4a4e6ac8036df7248ab6c24129ca13269 (patch) | |
tree | b9bb5e06928698e6000b3d2b5d44b28b3ea41780 | |
parent | 2a03e5d9fb1392f1c57f26589cd3d5efb19f4fa1 (diff) | |
download | freetype2-351fc4b4a4e6ac8036df7248ab6c24129ca13269.tar.gz |
[pfr] Fix binary search (#47514).
* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border
conditions correctly.
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | src/pfr/pfrsbit.c | 11 | ||||
-rw-r--r-- | src/sfnt/ttcmap.c | 2 |
3 files changed, 13 insertions, 7 deletions
@@ -1,5 +1,12 @@ 2016-03-29 Werner Lemberg <wl@gnu.org> + [pfr] Fix binary search (#47514). + + * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border + conditions correctly. + +2016-03-29 Werner Lemberg <wl@gnu.org> + [pfr] Minor. * src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Replace `left', diff --git a/src/pfr/pfrsbit.c b/src/pfr/pfrsbit.c index abdbb2084..68da033d4 100644 --- a/src/pfr/pfrsbit.c +++ b/src/pfr/pfrsbit.c @@ -364,13 +364,12 @@ else code = PFR_NEXT_BYTE( buff ); - if ( code == char_code ) - goto Found_It; - - if ( code < char_code ) - min = mid; - else + if ( char_code < code ) max = mid; + else if ( char_code > code ) + min = mid + 1; + else + goto Found_It; } Fail: diff --git a/src/sfnt/ttcmap.c b/src/sfnt/ttcmap.c index 8f9e3c1f5..01255a887 100644 --- a/src/sfnt/ttcmap.c +++ b/src/sfnt/ttcmap.c @@ -3104,7 +3104,7 @@ if ( char_code < start ) max = mid; - else if ( char_code > start+cnt ) + else if ( char_code > start + cnt ) min = mid + 1; else return TRUE; |