From: jinyaoguo Date: Wed, 11 Jun 2025 19:30:01 +0000 (+0200) Subject: patch 9.1.1455: Haiku: dailog objects created with no reference X-Git-Tag: v9.1.1455^0 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ae31d7bfb4ccc47c4843735f70ed68166a6436da;p=thirdparty%2Fvim.git 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 --- 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, /**/