[librsvg: 12/13] acquire_ref the mask node so it doesn't allow cycles




commit 6bc3361eede88e8811d9de45f9c603125e328df6
Author: Federico Mena Quintero <federico gnome org>
Date:   Tue May 11 18:04:51 2021 -0500

    acquire_ref the mask node so it doesn't allow cycles

 src/drawing_ctx.rs | 11 +++++++++++
 1 file changed, 11 insertions(+)
---
diff --git a/src/drawing_ctx.rs b/src/drawing_ctx.rs
index abadf400..1e039d25 100644
--- a/src/drawing_ctx.rs
+++ b/src/drawing_ctx.rs
@@ -515,6 +515,17 @@ impl DrawingCtx {
             return Ok(None);
         }
 
+        let _mask_acquired = match acquired_nodes.acquire_ref(mask_node) {
+            Ok(n) => n,
+
+            Err(AcquireError::CircularReference(_)) => {
+                rsvg_log!("circular reference in element {}", mask_node);
+                return Ok(None);
+            }
+
+            _ => unreachable!(),
+        };
+
         let mask = borrow_element_as!(mask_node, Mask);
 
         let bbox_rect = bbox.rect.as_ref().unwrap();


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]