mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-21 10:58:10 +02:00
In order to close a race between locking the backend and resurrecting a font via the cache, we need to keep the font face alive until after we take the backend lock. Once we have that lock, we can drop our reference and test if that was the last. Otherwise we must abort the destroy(). This fixes the double-free exposed by multithreaded applications trying to create and destroy the same font concurrently. Reported-by: Weeble <clockworksaint@gmail.com> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=69470 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> |
||
|---|---|---|
| .. | ||
| cairo-win32-debug.c | ||
| cairo-win32-device.c | ||
| cairo-win32-display-surface.c | ||
| cairo-win32-font.c | ||
| cairo-win32-gdi-compositor.c | ||
| cairo-win32-printing-surface.c | ||
| cairo-win32-private.h | ||
| cairo-win32-surface.c | ||
| cairo-win32-system.c | ||