Alexei Podtelezhnikov pushed to branch master at FreeType / FreeType
Commits:
-
e00afdb3
by Alexei Podtelezhnikov at 2022-11-07T21:36:32-05:00
1 changed file:
Changes:
... | ... | @@ -282,7 +282,7 @@ |
282 | 282 | FT_ULong* found_offset,
|
283 | 283 | FT_ULong* found_size )
|
284 | 284 | {
|
285 | - FT_UInt min, max, char_len;
|
|
285 | + FT_UInt min, max, mid, char_len;
|
|
286 | 286 | FT_Bool two = FT_BOOL( *flags & PFR_BITMAP_2BYTE_CHARCODE );
|
287 | 287 | FT_Byte* buff;
|
288 | 288 | |
... | ... | @@ -349,14 +349,14 @@ |
349 | 349 | |
350 | 350 | min = 0;
|
351 | 351 | max = count;
|
352 | + mid = min + ( max - min ) / 2;
|
|
352 | 353 | |
353 | 354 | /* binary search */
|
354 | 355 | while ( min < max )
|
355 | 356 | {
|
356 | - FT_UInt mid, code;
|
|
357 | + FT_UInt code;
|
|
357 | 358 | |
358 | 359 | |
359 | - mid = ( min + max ) >> 1;
|
|
360 | 360 | buff = base + mid * char_len;
|
361 | 361 | |
362 | 362 | if ( two )
|
... | ... | @@ -370,6 +370,11 @@ |
370 | 370 | min = mid + 1;
|
371 | 371 | else
|
372 | 372 | goto Found_It;
|
373 | + |
|
374 | + /* reasonable prediction in a continuous block */
|
|
375 | + mid += char_code - code;
|
|
376 | + if ( mid >= max || mid < min )
|
|
377 | + mid = min + ( max - min ) / 2;
|
|
373 | 378 | }
|
374 | 379 | |
375 | 380 | Fail:
|