fix(pdf): een tabelrij hoger dan een blad laat de export niet vastlopen (#1798) #1800
No reviewers
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck!1800
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/export-hang-1798"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Waarom
Gevonden bij het toetsen van de weesbescherming uit #1799. Een
pw.Table-rij kan niet over een bladovergang heen breken. Past de rij op geen enkel blad, dan plaatstMultiPageniets, begint een nieuw blad, en gebeurt daar precies hetzelfde — de opmaak loopt oneindig rond, op ~140% CPU, zonder melding.De bewaking die dat zou moeten vangen staat upstream in een
assert(multi_page.dartregel 294) en verdwijnt dus in een release-build. De gebruiker kreeg een bevroren venster zonder te weten welke tabel het was. Eén lange alinea in een tabelcel is genoeg, en dat is in een rapport heel gewoon.De oplossing
Een tabel met zo'n rij gaat als losse blokken de stroom in: per rij elke cel op een eigen regel, met de kolomkop ervoor zodat zichtbaar blijft welk gegeven bij welke kolom hoort. De uitlijning naast elkaar gaat verloren — die was bij een cel van een halve bladzijde toch geen leeshulp meer. De inhoud blijft volledig.
Twee dingen die een ronde kostten
Timeoutin een toets vuurt niet, want de isolate geeft nooit terug. Detectie moest daarom vóór het renderen, en ik heb de grens met een pure functie bepaald in plaats van met een renderproef.MultiPagestaat mag breken. Mijn eerste terugvalvorm zat in eenpw.Column; die plaatst zijn kinderen heel, waardoor de hang gewoon terugkwam in een andere vorm. De blokken gaan nu plat de stroom in.Waarschuwing bij het onderhouden
De regressietoets hangt wanneer de bescherming stukgaat, in plaats van te falen — om dezelfde reden dat een
Timeoutniet vuurt. Dat staat als waarschuwing in de toets zelf. Blijft de PDF-suite staan, kijk dan daar eerst.Bestandssplitsing
Het tekenbestand kroop met deze wijziging naar 1031 regels. Het tabeltekenwerk is als
partafgesplitst;document_pdf_widgets.dartzakt naar 820 en het plafond van 975 naar 850. Een extensie en geen losse functies, want dit werk heeft de stijl, de spanrenderer en de bladmaten van de bouwer nodig — en een extensie in eenpartdeelt de bibliotheekscope.Toetsplan
make checkgroen (MAKE_CHECK_EXIT=0, nul fouten in het log)make check-secretsenmake sast— 0 bevindingen