[librsvg/librsvg-2.44: 1/2] fix : Memory leaks occur when CSS parsing error




commit 53bd9898eb3a889b205f41bdfab8317168f1f21a
Author: claus6 <zhangyub uniontech com>
Date:   Tue Sep 22 09:46:53 2020 +0800

    fix :  Memory leaks occur when CSS parsing error
    
    when CSS parsing error,"fn css_error" is called,but it
    only print error memsage.In this case,we did not unref the "handler_data.selector",so the memory of 
"handler_data.selector" not be freed;

 rsvg_internals/src/css.rs | 6 ++++++
 1 file changed, 6 insertions(+)
---
diff --git a/rsvg_internals/src/css.rs b/rsvg_internals/src/css.rs
index d0b96270..7fd5a990 100644
--- a/rsvg_internals/src/css.rs
+++ b/rsvg_internals/src/css.rs
@@ -217,6 +217,12 @@ unsafe extern "C" fn css_property(
 
 unsafe extern "C" fn css_error(_a_this: *mut CRDocHandler) {
     println!("CSS parsing error");
+    
+    let handler_data = get_doc_handler_data(_a_this);
+    if !handler_data.selector.is_null() && ((*(handler_data.selector)).ref_count > 1) {
+        cr_selector_unref(handler_data.selector);
+        handler_data.selector = ptr::null_mut();
+    }
 }
 
 unsafe extern "C" fn css_unrecoverable_error(_a_this: *mut CRDocHandler) {


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