freetype2/src/type1
Ben Wagner 9079521002 [type1] Directly search for eexec in private dict
This code originally just searched for `eexec`. This was later modified
to check that the `eexec` found is valid (not in a string or comment).
This was done by searching for `eexec` as before and then, for each
`eexec` found, searching from the beginning using the correct parsing to
see if the `eexec` was still found. If the private dictionary is large
and contains many copies of `eexec` which are not valid, the initial
part of the private dictionary is scanned once for each, potentially
leading to n^2 parsing time.

Instead of finding an initial `eexec` and then re-parsing to discover if
it is valid, drop the initial search for `eexec` and just parse to find
a valid `eexec`. This is strictly faster since the validation must
happen anyway and avoids restarting from the beginning each time an
`eexec` is found in the data.

* src/type1/t1parse.c (T1_Get_Private_Dict): avoid n^2 parsing

Bug: https://bugs.chromium.org/p/chromium/issues/detail?id=1328883
2022-06-16 14:51:57 +00:00
..
module.mk Update all copyright notices. 2022-01-11 10:54:10 +01:00
rules.mk Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1afm.c Whitespace. 2022-04-01 08:50:33 +02:00
t1afm.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1driver.c [truetype, snft] Add service methods for `DeltaSetIdxMap` and `VarStore`. 2022-05-19 07:14:05 +02:00
t1driver.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1errors.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1gload.c Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1gload.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1load.c Whitespace. 2022-04-01 08:50:33 +02:00
t1load.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1objs.c Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1objs.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1parse.c [type1] Directly search for eexec in private dict 2022-06-16 14:51:57 +00:00
t1parse.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
t1tokens.h Update all copyright notices. 2022-01-11 10:54:10 +01:00
type1.c Update all copyright notices. 2022-01-11 10:54:10 +01:00