[librsvg: 12/32] Rename RenderingError::InstancingLimit to LimitExceeded




commit 73d8572dd313caecbe02a5e0a229541a20532e4c
Author: Federico Mena Quintero <federico gnome org>
Date:   Wed Nov 25 14:45:59 2020 -0600

    Rename RenderingError::InstancingLimit to LimitExceeded
    
    Similar to the variant in LoadingError.

 src/drawing_ctx.rs  | 4 +++-
 src/error.rs        | 9 +++------
 src/paint_server.rs | 6 ++++--
 tests/src/errors.rs | 2 +-
 4 files changed, 11 insertions(+), 10 deletions(-)
---
diff --git a/src/drawing_ctx.rs b/src/drawing_ctx.rs
index 78491169..acc11a21 100644
--- a/src/drawing_ctx.rs
+++ b/src/drawing_ctx.rs
@@ -1644,7 +1644,9 @@ impl DrawingCtx {
             }
 
             Err(AcquireError::MaxReferencesExceeded) => {
-                return Err(RenderingError::InstancingLimit);
+                return Err(RenderingError::LimitExceeded(String::from(
+                    "maximum number of referenced objects",
+                )));
             }
 
             Err(AcquireError::InvalidLinkType(_)) => unreachable!(),
diff --git a/src/error.rs b/src/error.rs
index 0b6d899c..a5bd8f37 100644
--- a/src/error.rs
+++ b/src/error.rs
@@ -122,11 +122,8 @@ pub enum RenderingError {
     /// A Cairo error happened during rendering.
     Cairo(cairo::Status),
 
-    /// The maximum number of rendered objects was reached.
-    ///
-    /// Librsvg has a limit on the number of rendered objects, so that malicious
-    /// files cannot consume CPU time arbitrarily.
-    InstancingLimit,
+    /// A particular implementation-defined limit was exceeded.
+    LimitExceeded(String),
 
     /// Tried to reference an SVG element from a fragment identifier that is incorrect.
     InvalidId(DefsLookupErrorKind),
@@ -144,7 +141,7 @@ impl error::Error for RenderingError {}
 impl fmt::Display for RenderingError {
     fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
         match *self {
-            RenderingError::InstancingLimit => write!(f, "instancing limit"),
+            RenderingError::LimitExceeded(ref s) => write!(f, "limit exceeded: {}", s),
             RenderingError::OutOfMemory => write!(f, "out of memory"),
             RenderingError::HandleIsNotLoaded => write!(f, "SVG data is not loaded into handle"),
             RenderingError::Cairo(ref status) => write!(f, "cairo error: {:?}", status),
diff --git a/src/paint_server.rs b/src/paint_server.rs
index 974477f7..017dfd2b 100644
--- a/src/paint_server.rs
+++ b/src/paint_server.rs
@@ -103,8 +103,10 @@ impl PaintServer {
                 })
                 .or_else(|err| match (err, alternate) {
                     (AcquireError::MaxReferencesExceeded, _) => {
-                        rsvg_log!("maximum number of references exceeded");
-                        Err(RenderingError::InstancingLimit)
+                        rsvg_log!("exceeded maximum number of referenced objects");
+                        Err(RenderingError::LimitExceeded(String::from(
+                            "maximum number of referenced objects",
+                        )))
                     }
 
                     // The following two cases catch AcquireError::CircularReference, which for
diff --git a/tests/src/errors.rs b/tests/src/errors.rs
index 19ce3578..6ef35603 100644
--- a/tests/src/errors.rs
+++ b/tests/src/errors.rs
@@ -45,7 +45,7 @@ fn rendering_instancing_limit(name: &str) {
                 height: 500.0,
             },
         ),
-        Err(RenderingError::InstancingLimit)
+        Err(RenderingError::LimitExceeded(_))
     ));
 }
 


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