Selaa lähdekoodia

add comments about the cause of the leak

Evan Almloff 1 vuosi sitten
vanhempi
commit
eea4a02ef5
1 muutettua tiedostoa jossa 6 lisäystä ja 0 poistoa
  1. 6 0
      packages/core/src/bump_frame.rs

+ 6 - 0
packages/core/src/bump_frame.rs

@@ -7,6 +7,8 @@ use std::cell::{Cell, UnsafeCell};
 pub(crate) struct BumpFrame {
     pub bump: UnsafeCell<Bump>,
     pub node: Cell<*const RenderReturn<'static>>,
+
+    // The bump allocator will not call the destructor of the objects it allocated. Attributes and props need to have there destructor called, so we keep a list of them to drop before the bump allocator is reset.
     pub(crate) attributes_to_drop_before_reset: RefCell<Vec<*const Attribute<'static>>>,
     pub(crate) props_to_drop_before_reset: RefCell<Vec<*const VComponent<'static>>>,
 }
@@ -43,6 +45,10 @@ impl BumpFrame {
             .push(attribute);
     }
 
+    /// Reset the bump allocator and drop all the attributes and props that were allocated in it.
+    ///
+    /// # Safety
+    /// The caller must insure that no reference to anything allocated in the bump allocator is available after this function is called.
     pub(crate) unsafe fn reset(&self) {
         let mut attributes = self.attributes_to_drop_before_reset.borrow_mut();
         attributes.drain(..).for_each(|attribute| {