Repository navigation
fix(pdfjs): voorkom vastlopen op ongeldige Type 4-tokens (#839) - #840
Closed
oscar981-op wants to merge 2 commits into
Closed
oscar981-op wants to merge 2 commits into
oscar981-op wants to merge 2 commits into
Conversation
Merged
Collaborator
|
Thank you @oscar981-op! This is released in 2026.44.4 as one squashed commit with you as the author (merged through #862). Review fix on top: the hang test checks lexer progress directly instead of waiting for a timeout. The build fails loudly if the patched code is not found. |
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.
Integrated with maintainer review fixes via #862 (upstream main cdda6a0). The original tested branch is retained as reference; do not merge it again.
Closes #839
Een PDF met een Type 4-functie zoals
{ pop + 0 0 }laat de PostScript-lexer van de gepinde PDF.js 6.4.299 op dezelfde invoerpositie staan. De echte legacy-worker blijft daardoor hangen bij het opbouwen van de shading-operatorlijst. Deze PR neemt de gerichte voortgangsfix uit Mozilla PDF.js #22365 (e7aa97b49) over, zonder andere wijzigingen uit een nieuwe PDF.js-versie.De Vite-plugin past alleen de twee bekende lexermethoden aan: ongeldige tokens schuiven één teken door; oneindige getallen verbruiken hun volledige token en leveren nul. Bij een afwijkende pakketversie of gewijzigde bron stopt de bouw met een gerichte fout, zodat een toekomstige dependency-update opnieuw wordt beoordeeld. De ongewijzigde dependency blijft op 6.4.299 vastgezet; node_modules wordt niet aangepast.
De editor en zelfstandige afdrukwachtrij gebruiken dezelfde gepatchte worker. In dev wordt deze via de bestaande same-origin workerroute geserveerd. In productie wordt de gepatchte inhoud vóór het berekenen van de asset-hash uitgegeven, zodat een gecachte kwetsbare worker niet dezelfde URL houdt. De bestaande Chrome-91-transformatie en polyfills blijven toegepast. Versies zijn volgens de repository-instructies gesynchroniseerd naar 2026.44.9.
Validatie:
+,-,1e999,fooen@renderen af. Geldige rode gradiënt blijft pixelgelijk aan de originele worker. Annuleren, opnieuw renderen en heropenen slagen.pdf.worker-BVja31PW.js). Alle zes PDF-fixtures door die daadwerkelijk uitgegeven én getranspileerde worker uitgevoerd onder een deadline; geslaagd. Deze controle vond ook de aparte workerroute van de afdrukwachtrij, die is meegenomen.git diff --checkschoon.Herhalen vanuit open-pdf-studio:
node --test scripts/pdfjs-postscript-progress.test.mjsnode scripts/postscript-browser-e2e.mjs <geïsoleerde-vite-url>vite build:node scripts/postscript-build-check.mjsBeperking: getest met de echte PDF.js-worker in Node en Chromium; geen live native WebView getest. Er wordt geen probleem of fix in PDFium geclaimd. De repro is beperkt tot Type 4-parservoortgang, niet tot algemene resourcebegrenzing voor willekeurige PDF's.
Bijgewerkt op upstream main
139a3198fna merge van #841. Alleen versievelden conflicteerden. Op de nieuwe head opnieuw geslaagd: browserregressie, TypeScript, Vite, 55 gerichte PDF.js-/oude-WebView-/release-/versietests en alle zes fixtures tegen de daadwerkelijk uitgegeven worker. De volledige unitsuite hierboven betreft de oorspronkelijke fix; de volledige upstream-CI is inmiddels ook op de nieuwe head geslaagd.Actuele head:
620d1176555a1cb097acb31f8aa37b570802474d. Alle upstream-controles zijn geslaagd: Windows, Linux, macOS, render-regression en hosted-csp. De installercontrole is voltooid: Android, webbundel en MCPB geslaagd; desktopjobs geblokkeerd door de bekende fork-configuratie (Azure-endpoint, updater-privésleutel en Apple-certificaatimport). Dit is geen uitspraak over organisatiecredentials of gepubliceerde upstream-installers.Blijft concept in afwachting van succesvolle installerondertekening en verplichte review. Het huidige account heeft geen upstream-mergerecht. Fork-release v2026.44.9 blijft concept; niets gepubliceerd.
Status na upstream release #844: main
846a2a67fveroorzaakt 23 conflicten in 16 versie-/releasebestanden. Een read-only mergecontrole bevestigt dat alle conflicthunks uitsluitend versienummers betreffen; de functionele wijzigingen mergen zonder conflict. De vermelde groene CI geldt voor de bestaande PR-head, niet voor een combinatie met deze nieuwe main. Versies worden opnieuw afgestemd zodra de installer-/reviewblokkades zijn opgelost of inhoudelijke review een nieuwe push nodig maakt.