diff --git a/crates/io/src/dxf_read.rs b/crates/io/src/dxf_read.rs index 7615bc569..705a7cc08 100644 --- a/crates/io/src/dxf_read.rs +++ b/crates/io/src/dxf_read.rs @@ -1422,7 +1422,7 @@ fn tables(tags: &[Tag], d: &mut Drawing, rx: &mut Rx) { match kind.as_str() { "LAYER" => { let name = t.s(2).unwrap_or_default(); - if name.is_empty() { + if name.is_empty() || d.layers.len() >= MAX_OBJECTS { continue; } let aci = t.i(62).unwrap_or(7); @@ -1459,7 +1459,7 @@ fn tables(tags: &[Tag], d: &mut Drawing, rx: &mut Rx) { } "LTYPE" => { let name = t.s(2).unwrap_or_default(); - if name.is_empty() || d.linetype(&name).is_some() { + if name.is_empty() || d.linetype(&name).is_some() || d.linetypes.len() >= MAX_OBJECTS { continue; } let pattern = ltype_pattern(&tg, <ype_styles); @@ -1467,7 +1467,7 @@ fn tables(tags: &[Tag], d: &mut Drawing, rx: &mut Rx) { } "STYLE" => { let name = t.s(2).unwrap_or_default(); - if name.is_empty() { + if name.is_empty() || d.text_styles.len() >= MAX_OBJECTS { continue; } // 70 bit 4: vertical; 71 bits 2/4: backwards / upside down. @@ -1549,7 +1549,7 @@ fn tables(tags: &[Tag], d: &mut Drawing, rx: &mut Rx) { } "DIMSTYLE" => { let name = t.s(2).unwrap_or_default(); - if name.is_empty() { + if name.is_empty() || d.dim_styles.len() >= MAX_OBJECTS { continue; } // Every variable with a DIMSTYLE group code; values the style can't take are