mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-22 15:40:19 +00:00
LibGUI: Fix crash during HackStudio application teardown
We can't rely on a plain global WeakPtr during application teardown since destruction order is not defined. Instead, use a NeverDestroyed to hold the GUI::Application weak pointer. This way it will always be reliable. Fixes #3251.
This commit is contained in:
parent
0359a5ce27
commit
683ae4f7ad
Notes:
sideshowbarker
2024-07-19 03:18:36 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/683ae4f7ade
1 changed files with 5 additions and 4 deletions
|
@ -24,6 +24,7 @@
|
|||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <AK/NeverDestroyed.h>
|
||||
#include <LibCore/EventLoop.h>
|
||||
#include <LibGUI/Action.h>
|
||||
#include <LibGUI/Application.h>
|
||||
|
@ -39,17 +40,17 @@
|
|||
|
||||
namespace GUI {
|
||||
|
||||
static WeakPtr<Application> s_the;
|
||||
static NeverDestroyed<WeakPtr<Application>> s_the;
|
||||
|
||||
Application* Application::the()
|
||||
{
|
||||
return s_the;
|
||||
return *s_the;
|
||||
}
|
||||
|
||||
Application::Application(int argc, char** argv)
|
||||
{
|
||||
ASSERT(!s_the);
|
||||
s_the = make_weak_ptr();
|
||||
ASSERT(!*s_the);
|
||||
*s_the = make_weak_ptr();
|
||||
m_event_loop = make<Core::EventLoop>();
|
||||
WindowServerConnection::the();
|
||||
Clipboard::initialize({});
|
||||
|
|
Loading…
Reference in a new issue