bug(export): begrens het totale geheugen- en bytebudget van self-contained HTML #1045

Closed
opened 2026-08-01 08:26:05 +00:00 by brenno · 1 comment
Owner

Context
HTML-export leest alle unieke beelden, bewaart alle base64-data-URIs, JSON-encodeert die lijst en bouwt daarna het volledige HTML-document als nog een String. Er is alleen een grens per los beeld, niet over de export als geheel.

Impact
Twintig toegestane GIFs van 64 MiB kunnen ongeveer 1,67 GiB base64 opleveren, exclusief bronbytes, JSON en einddocument. Op web gebeurt dit op de hoofd-isolate.

Relevante code

  • lib/services/marp_html/marp_html_service_images.dart:35
  • lib/services/marp_html/marp_html_service_render_script.dart:27
  • lib/services/marp_html_service.dart:251

Acceptatie

  • HTML-export heeft een expliciet cumulatief bytebudget met een duidelijke gebruikersfout vóór geheugenuitputting.
  • Vermijd onnodig gelijktijdig levende kopieën van bronbytes, base64, JSON en eind-HTML.
  • Tests bewaken budget exact-op-de-grens en één byte erboven, plus deduplicatie van hergebruikte beelden.
Context HTML-export leest alle unieke beelden, bewaart alle base64-data-URIs, JSON-encodeert die lijst en bouwt daarna het volledige HTML-document als nog een String. Er is alleen een grens per los beeld, niet over de export als geheel. Impact Twintig toegestane GIFs van 64 MiB kunnen ongeveer 1,67 GiB base64 opleveren, exclusief bronbytes, JSON en einddocument. Op web gebeurt dit op de hoofd-isolate. Relevante code - lib/services/marp_html/marp_html_service_images.dart:35 - lib/services/marp_html/marp_html_service_render_script.dart:27 - lib/services/marp_html_service.dart:251 Acceptatie - HTML-export heeft een expliciet cumulatief bytebudget met een duidelijke gebruikersfout vóór geheugenuitputting. - Vermijd onnodig gelijktijdig levende kopieën van bronbytes, base64, JSON en eind-HTML. - Tests bewaken budget exact-op-de-grens en één byte erboven, plus deduplicatie van hergebruikte beelden.
Author
Owner

Opgelost op main (PR #1090, merge in 88b4978b). De HTML-export dwingt nu een cumulatief bytebudget af (kMaxHtmlEmbedTotalBytes = 512 MiB) dat vóór geheugenuitputting faalt met een melding; hergebruikte beelden tellen via de bestaande dedup één keer. Tests: op-de-grens, één byte erover, en dedup tegen het budget.

Opgelost op main (PR #1090, merge in 88b4978b). De HTML-export dwingt nu een cumulatief bytebudget af (kMaxHtmlEmbedTotalBytes = 512 MiB) dat vóór geheugenuitputting faalt met een melding; hergebruikte beelden tellen via de bestaande dedup één keer. Tests: op-de-grens, één byte erover, en dedup tegen het budget.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#1045
No description provided.