fix invalid locations never being dropped (#1747)

This commit is contained in:
ealmloff 2024-01-03 14:01:50 -06:00 committed by GitHub
parent 80a8e1f512
commit cde5ac5f58
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -700,14 +700,16 @@ impl Owner {
/// Creates an invalid handle. This is useful for creating a handle that will be filled in later. If you use this before the value is filled in, you will get may get a panic or an out of date value.
pub fn invalid<T: 'static>(&self) -> GenerationalBox<T> {
let location = self.store.claim();
GenerationalBox {
let key = GenerationalBox {
raw: location,
#[cfg(any(debug_assertions, feature = "check_generation"))]
generation: location.0.generation.get(),
#[cfg(any(debug_assertions, feature = "debug_ownership"))]
created_at: std::panic::Location::caller(),
_marker: PhantomData,
}
};
self.owned.borrow_mut().push(location);
key
}
}