mirror of
https://github.com/storytold/craft-libs.git
synced 2026-11-09 03:51:47 +00:00
hayro-postscript 0.1.0 is the token scanner hayro-cmap uses for the CMap streams PDFs embed. Its object reader skipped each `<<` or `>>` by calling itself again, so a stream holding a long run of `<` or `>` bytes recursed once per pair and aborted the process with a stack overflow. Vendor the crates.io package unchanged and patch `object::read` to skip those runs in a loop, returning the same next object as before. Wire it in like the other Hayro crates: workspace exclude, [patch.crates-io] entry, SOURCE.json with registry and local hashes, the backend test script, NOTICE, ATTRIBUTION.md and the reader README. Tests cover a million `<` and a million `>` bytes, `<< /A 1 >>` and nested `<<<< /X >>>>` runs.
31 lines
1.1 KiB
Markdown
31 lines
1.1 KiB
Markdown
# hayro-postscript
|
|
|
|
[](https://crates.io/crates/hayro-postscript)
|
|
[](https://docs.rs/hayro-postscript)
|
|
|
|
<!-- cargo-rdme start -->
|
|
|
|
A lightweight PostScript scanner.
|
|
|
|
This crate provides a scanner for tokenizing PostScript programs into typed objects.
|
|
It currently only implements a very small subset of the PostScript language,
|
|
with the main goal of being enough to parse CMAP files, but the scope _might_
|
|
be expanded upon in the future.
|
|
|
|
The supported types include integers and real numbers, name objects, strings and arrays.
|
|
Unsupported is anything else, including dictionaries, procedures, etc. An error
|
|
will be returned in case any of these is encountered.
|
|
|
|
### Safety
|
|
This crate forbids unsafe code via a crate-level attribute.
|
|
|
|
<!-- cargo-rdme end -->
|
|
|
|
## License
|
|
Licensed under either of
|
|
|
|
- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or <http://www.apache.org/licenses/LICENSE-2.0>)
|
|
- MIT license ([LICENSE-MIT](LICENSE-MIT) or <http://opensource.org/licenses/MIT>)
|
|
|
|
at your option.
|