From ae31d7bfb4ccc47c4843735f70ed68166a6436da Mon Sep 17 00:00:00 2001 From: jinyaoguo Date: Wed, 11 Jun 2025 21:30:01 +0200 Subject: [PATCH] patch 9.1.1455: Haiku: dailog objects created with no reference Problem: Haiku: dailog objects created with no reference Solution: delete the objects before returning (jinyaoguo) In the functions gui_mch_dialog() and gui_mch_font_dialog(), Dialog objects are created but never escape the function scope. The call to dialog->Go() only returns a boolean value and does not retain any reference to the Dialog object itself, which may lead to potential memory leak. Fix this by deleting the object after using it. closes: #17501 Signed-off-by: jinyaoguo Signed-off-by: Christian Brabandt --- src/gui_haiku.cc | 8 ++++++-- src/version.c | 2 ++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/gui_haiku.cc b/src/gui_haiku.cc index 748f97e542..3865a4f4df 100644 --- a/src/gui_haiku.cc +++ b/src/gui_haiku.cc @@ -3820,7 +3820,9 @@ gui_mch_font_dialog(font_family* family, font_style* style, float* size) #if defined(FEAT_GUI_DIALOG) // gui.vimWindow->Unlock(); VimSelectFontDialog *dialog = new VimSelectFontDialog(family, style, size); - return dialog->Go(); + bool ret = dialog->Go(); + delete dialog; + return ret; #else return NOFONT; #endif // FEAT_GUI_DIALOG @@ -4917,7 +4919,9 @@ gui_mch_dialog( { VimDialog *dialog = new VimDialog(type, (char*)title, (char*)message, (char*)buttons, dfltbutton, (char*)textfield, ex_cmd); - return dialog->Go(); + bool ret = dialog->Go(); + delete dialog; + return ret; } #endif // FEAT_GUI_DIALOG diff --git a/src/version.c b/src/version.c index 5907766573..69cf433620 100644 --- a/src/version.c +++ b/src/version.c @@ -709,6 +709,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1455, /**/ 1454, /**/