mirror of
https://github.com/servo/servo.git
synced 2025-08-02 20:20:14 +01:00
`LOCAL_CONTEXT_KEY` is currently a `Cell<*mut LocalLayoutContext>`. The use of the raw pointer means that the `LocalLayoutContext` is not dropped when the thread dies; this leaks FreeType instances and probably other things. There are also some unsafe getter functions in `LayoutContext` (`font_context`, `applicable_declarations_cache` and `style_sharing_candidate_cache`) that @eddyb says involve undefined behaviour. This changeset changes `LOCAL_CONTEXT_KEY` to `RefCell<Option<Rc<LocalLayoutContext>>>`. This fixes the leak and also results in safe getters. (Fixes #6282.) <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/6289) <!-- Reviewable:end --> |
||
---|---|---|
.. | ||
canvas | ||
canvas_traits | ||
compositing | ||
devtools | ||
devtools_traits | ||
gfx | ||
gfx_traits | ||
layout | ||
layout_traits | ||
msg | ||
net | ||
net_traits | ||
plugins | ||
profile | ||
profile_traits | ||
script | ||
script_traits | ||
servo | ||
style | ||
util | ||
webdriver_server | ||
webdriver_traits |