Remove created dot if drawing new seg or bend fails

This commit is contained in:
Mikolaj Wielgus 2023-09-04 04:51:27 +02:00
parent 84a5b81032
commit 53c24b1a14
1 changed files with 18 additions and 4 deletions

View File

@ -154,9 +154,16 @@ impl<'a> Draw<'a> {
.add_dot(self.layout.primitive(head.dot).weight())?;
let net = self.layout.primitive(head.dot).weight().net;
let bend = self
let bend = match self
.layout
.add_bend(head.dot, bend_to, around, BendWeight { net, cw })?;
.add_bend(head.dot, bend_to, around, BendWeight { net, cw })
{
Err(err) => {
self.layout.remove(bend_to);
return Err(err);
}
Ok(bend) => bend,
};
Ok(Head {
dot: bend_to,
segbend: Some(Segbend { bend, dot, seg }),
@ -192,9 +199,16 @@ impl<'a> Draw<'a> {
r: width / 2.0,
},
})?;
let seg = self
let seg = match self
.layout
.add_seg(head.dot, to_index, SegWeight { net, width })?;
.add_seg(head.dot, to_index, SegWeight { net, width })
{
Err(err) => {
self.layout.remove(to_index);
return Err(err);
}
Ok(bend) => bend,
};
Ok((
Head {
dot: to_index,