From 101b09cc0524706ca062454cc31c51727a37a239 Mon Sep 17 00:00:00 2001 From: Augustin Cavalier Date: Thu, 27 Feb 2025 22:07:13 -0500 Subject: [PATCH] Tracker: Set message in ModelMenuItem after the try/catch block. Otherwise the ownership isn't clear: if the exception is thrown after the item partially initializes, the message might get deleted by a destructor already. This way, the ownership is clear. --- src/kits/tracker/ContainerWindow.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/kits/tracker/ContainerWindow.cpp b/src/kits/tracker/ContainerWindow.cpp index a6751bc904..3389ae1f94 100644 --- a/src/kits/tracker/ContainerWindow.cpp +++ b/src/kits/tracker/ContainerWindow.cpp @@ -259,17 +259,17 @@ AddOneAddOn(const Model* model, const char* name, uint32 shortcut, { AddOneAddOnParams* params = (AddOneAddOnParams*)context; - BMessage* message = new BMessage(kLoadAddOn); - message->AddRef("refs", model->EntryRef()); - ModelMenuItem* item; try { - item = new ModelMenuItem(model, name, message, (char)shortcut, modifiers); + item = new ModelMenuItem(model, name, NULL, (char)shortcut, modifiers); } catch (...) { - delete message; return; } + BMessage* message = new BMessage(kLoadAddOn); + message->AddRef("refs", model->EntryRef()); + item->SetMessage(message); + const entry_ref* addOnRef = model->EntryRef(); AddOnMenuGenerate(addOnRef, menu, window);