vectorcraft/crates/doc/src
bflatastic 0efcaeb558 Importers: a brush that draws itself by name no longer crashes
A scatter brush whose art is an instance of a symbol stroked with that brush, or any brush whose
art is painted with a pattern whose tile is stroked with it, drew itself without end: a stack
overflow in a hand-written native file. Brush pieces already strip the brushes of their own
strokes; now what they draw by name that would draw a brushed stroke (a symbol instance, or a
pattern paint, also through the symbols and patterns those use) is left out too, in one place
(`stroke_pieces`, which every renderer and exporter calls with the document).

Probed the rest of item 2 of the depth follow-up with hand-written hostile inputs, kept as tests:
graph designs of deep art and of a symbol holding itself, Affinity groups nested to and past
both of its reader's caps, DXF blocks inserting themselves, EMF/WMF saving states without end,
and plug-in manifests and output nested 30,000 to 100,000 deep. None of them overflowed.
2026-10-14 10:13:45 +07:00
..
selection deselect hidden and locked objects in linear time 2026-10-12 14:50:00 +07:00
appearance.rs #1172: share an object's appearance with its undo history until it changes 2026-10-11 23:27:21 +07:00
assets.rs #1172: edit a large selection in time linear in the document, not quadratic 2026-10-11 23:26:53 +07:00
blend.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
clipnest.rs Importers: nesting is capped, so a deeply nested file can't overflow the stack 2026-10-14 07:37:52 +07:00
cmyk.rs Part of #1466: grayscale TIFFs with an alpha channel or extra channels can be placed 2026-10-13 02:48:39 +07:00
corners.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
depth.rs Importers: nesting is capped, so a deeply nested file can't overflow the stack 2026-10-14 07:37:52 +07:00
graph.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
hit.rs Symbols: instances of imported symbols are measured by their art 2026-10-14 04:56:30 +07:00
id_index.rs #1244: undo history bounded by bytes, without lookup tables or repeated selections in its steps 2026-10-12 11:02:17 +07:00
inks.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
inline.rs M7: inline symbols in text 2026-10-08 15:45:34 -07:00
lib.rs Fix #1717: sampling and recolouring check an image's RGBA size before decoding 2026-10-14 08:47:10 +07:00
links.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
live.rs Symbols: instances of imported symbols are measured by their art 2026-10-14 04:56:30 +07:00
marks.rs M4.72: PDF export draws printer's marks in Registration around each page 2026-10-05 13:05:20 +07:00
mem.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
metadata.rs M4.55: File Info with author, description, keyword chips, rating and copyright, written to SVG, PDF and PNG 2026-10-05 09:55:47 +07:00
node.rs Part of #394: Identify Objects By shows and edits Layers names as XML IDs 2026-10-14 05:13:15 +07:00
orient.rs Symbols: instances of imported symbols are measured by their art 2026-10-14 04:56:30 +07:00
overprint.rs M4.83: overprinting fills and strokes overprint in PDF 2026-10-05 17:39:28 +07:00
pattern.rs Symbols: instances of imported symbols are measured by their art 2026-10-14 04:56:30 +07:00
perspective.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
pixels.rs Fix #1717: sampling and recolouring check an image's RGBA size before decoding 2026-10-14 08:47:10 +07:00
placed_document.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
profiles.rs M4.35: native files compress, save atomically, drop unused images, keep newer keys and save down to v1 2026-10-05 12:27:02 +07:00
puppet.rs M8.6: Puppet Warp pins appear at once, warp from the rest shape and follow Undo 2026-10-06 11:16:10 +07:00
range.rs M4.75: File → Print writes the job as a print-ready PDF: paper, scale, tiles, marks and bleed, separations 2026-10-05 15:13:10 +07:00
rastersettings.rs M4.56: Document Raster Effects Settings with colour model, background, anti-alias, clipping mask and room around 2026-10-05 09:55:48 +07:00
reach.rs M3.63: visual bounds and clicks take in the whole stroke 2026-10-05 02:55:23 +07:00
recolor.rs Fix #122: colour adjustment live effects (Effect > Color Adjustments) 2026-10-06 00:42:26 +07:00
selection.rs Fix #1408: the Transform tools and commands act on the anchors selected with Direct Selection 2026-10-12 21:01:15 +07:00
setup.rs M4.71: PDF pages carry the bleed and trim boxes; non-printing layers are left out 2026-10-05 13:05:19 +07:00
shaper.rs M2.9: add editable Shaper groups and shape orientation steps 2026-10-08 22:52:23 +01:00
shared.rs #1244: undo history bounded by bytes, without lookup tables or repeated selections in its steps 2026-10-12 11:02:17 +07:00
slices.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
style_libs.rs M3.98: radial annotator extent ellipse, aspect handle and off-centre focal point 2026-10-05 04:43:43 +07:00
swatches.rs Importers: a brush that draws itself by name no longer crashes 2026-10-14 10:13:45 +07:00
symbols.rs Symbols: instances of imported symbols are measured by their art 2026-10-14 04:56:30 +07:00
tests_lookups.rs Part of #1429: Edit and Object commands on many objects take time linear in the document 2026-10-12 23:42:43 +07:00
tests_slices.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
tests_units.rs Stroke: keep the pt ladder, fix the fallback units and per-unit decimals (review of #426) 2026-10-08 12:27:06 +07:00
text.rs Type: Digits — Default, Arabic, Hindi and Farsi numeral systems 2026-10-11 22:18:01 +07:00
trace.rs #1244: smaller objects: Node 352 -> 152 bytes, NodeKind 200 -> 80, and a cheaper undo estimate 2026-10-12 11:02:32 +07:00
variables.rs variables: review fixes for hidden objects, namespaces and agent params 2026-10-10 23:34:21 +07:00
xml_id.rs Identify Objects By: rustfmt 2026-10-14 05:13:36 +07:00