patch 8.2.2786: Vim9: memory leak when using :s with expression
Problem: Vim9: memory leak when using :s with expression.
Solution: Clean up the instruction list.
diff --git a/src/version.c b/src/version.c
index 22a2751..834196d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2786,
+/**/
2785,
/**/
2784,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 027f79d..0695879 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -9416,8 +9416,15 @@
break;
case ISN_SUBSTITUTE:
- vim_free(isn->isn_arg.subs.subs_cmd);
- vim_free(isn->isn_arg.subs.subs_instr);
+ {
+ int idx;
+ isn_T *list = isn->isn_arg.subs.subs_instr;
+
+ vim_free(isn->isn_arg.subs.subs_cmd);
+ for (idx = 0; list[idx].isn_type != ISN_FINISH; ++idx)
+ delete_instr(list + idx);
+ vim_free(list);
+ }
break;
case ISN_LOADS: