diff src/userfunc.c @ 20996:3af71cbcfdbe v8.2.1049

patch 8.2.1049: Vim9: leaking memory when using continuation line Commit: https://github.com/vim/vim/commit/b171fb179053fa631fec74911b5fb9374cb6a8a1 Author: Bram Moolenaar <Bram@vim.org> Date: Wed Jun 24 20:34:03 2020 +0200 patch 8.2.1049: Vim9: leaking memory when using continuation line Problem: Vim9: leaking memory when using continuation line. Solution: Keep a pointer to the continuation line in evalarg_T. Centralize checking for a next command.
author Bram Moolenaar <Bram@vim.org>
date Wed, 24 Jun 2020 20:45:04 +0200
parents 7ee565134d4a
children ae185f35e256
line wrap: on
line diff
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -3716,7 +3716,7 @@ ex_return(exarg_T *eap)
 
     eap->nextcmd = NULL;
     if ((*arg != NUL && *arg != '|' && *arg != '\n')
-			&& eval0(arg, &rettv, &eap->nextcmd, &evalarg) != FAIL)
+				  && eval0(arg, &rettv, eap, &evalarg) != FAIL)
     {
 	if (!eap->skip)
 	    returning = do_return(eap, FALSE, TRUE, &rettv);
@@ -3773,7 +3773,7 @@ ex_call(exarg_T *eap)
 	// instead to skip to any following command, e.g. for:
 	//   :if 0 | call dict.foo().bar() | endif
 	++emsg_skip;
-	if (eval0(eap->arg, &rettv, &eap->nextcmd, NULL) != FAIL)
+	if (eval0(eap->arg, &rettv, eap, NULL) != FAIL)
 	    clear_tv(&rettv);
 	--emsg_skip;
 	return;