summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Lemberg <wl@gnu.org>2016-03-29 09:13:13 +0200
committerWerner Lemberg <wl@gnu.org>2016-03-29 09:13:13 +0200
commit351fc4b4a4e6ac8036df7248ab6c24129ca13269 (patch)
treeb9bb5e06928698e6000b3d2b5d44b28b3ea41780
parent2a03e5d9fb1392f1c57f26589cd3d5efb19f4fa1 (diff)
downloadfreetype2-351fc4b4a4e6ac8036df7248ab6c24129ca13269.tar.gz
[pfr] Fix binary search (#47514).
* src/pfr/pfrsbit.c (pfr_lookup_bitmap_data): Handle border conditions correctly.
-rw-r--r--ChangeLog7
-rw-r--r--src/pfr/pfrsbit.c11
-rw-r--r--src/sfnt/ttcmap.c2
3 files changed, 13 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index e7e92c18d..24735469d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;