Repository navigation
fix(pdf): keep function evaluation finite and interpolation stable - #1146
Merged
Merged
Conversation
andiwand
force-pushed
the
review/127-pdf-aes-padding
branch
from
October 6, 2026 14:31
1a2b4f4 to
ab3e889
Compare
Function::eval now throws on a non-finite input or result, and no caller caught it, so one malformed function stopped the whole document. A Separation or DeviceN colour falls back to the ink approximation it uses without a tint transform, and a shading whose function has no finite answer is unusable, like one with an unsupported function. The new throw checks assign the [[nodiscard]] result to std::ignore, so the -Werror build accepts them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MxyTMutqSUJRGfxA8CyzMc
andiwand
force-pushed
the
review/128-pdf-function-numbers
branch
from
October 6, 2026 14:47
0666414 to
e7e3cea
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 Generated with Claude Code
Non-finite function inputs could reach sampled-function integer conversions, while large finite intervals overflowed during interpolation. Reject non-finite inputs and final results, use stable interpolation, and validate exponential coefficients and domains. Constant results and finite range clipping remain valid when the power calculation overflows. A Separation or DeviceN colour whose tint transform fails falls back to the ink approximation, and a shading whose function fails is unusable, so a failing function never aborts the page.
Validation: the large-interval regression fails on the parent; 159 targeted tests and all 50 PDF corpus metadata/HTML-generation checks pass. LLVM 22 clang-tidy passes. The changed translation unit compiles for NDK 28.1, emsdk 3.1.73 and iOS 15, alongside the macOS 12 build.