changeset 20195:a2447c58da25 v8.2.0653

patch 8.2.0653: using uninitialized pointer Commit: https://github.com/vim/vim/commit/03afdcf1f449d23c9b6bc56d8b61f31dd4e11836 Author: Bram Moolenaar <Bram@vim.org> Date: Mon Apr 27 23:39:30 2020 +0200 patch 8.2.0653: using uninitialized pointer Problem: using uninitialized pointer. Solution: Move assignment up. (John Marriott)
author Bram Moolenaar <Bram@vim.org>
date Mon, 27 Apr 2020 23:45:03 +0200
parents 20bd9fa66206
children a15662302a33
files src/testdir/test_vim9_script.vim src/userfunc.c src/version.c
diffstat 3 files changed, 19 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -707,8 +707,7 @@ def Test_vim9script_reload_import()
       return valtwo
     enddef
   END
-  writefile(lines + morelines,
-            'Xreload.vim')
+  writefile(lines + morelines, 'Xreload.vim')
   source Xreload.vim
   source Xreload.vim
   source Xreload.vim
@@ -724,10 +723,9 @@ def Test_vim9script_reload_import()
   writefile(testlines, 'Ximport.vim')
   source Ximport.vim
 
-  " test that when not using "morelines" valtwo is still defined
-  " need to source Xreload.vim again, import doesn't reload a script
+  " Test that when not using "morelines" GetValtwo() and valtwo are still
+  " defined, because import doesn't reload a script.
   writefile(lines, 'Xreload.vim')
-  source Xreload.vim
   source Ximport.vim
 
   " cannot declare a var twice
@@ -750,36 +748,36 @@ def Test_vim9script_reload_delfunc()
       return 'yes'
     enddef
   END
-  let middle_lines =<< trim END
+  let withno_lines =<< trim END
     def FuncNo(): string
       return 'no'
     enddef
-  END
-  let final_lines =<< trim END
     def g:DoCheck(no_exists: bool)
       assert_equal('yes', FuncYes())
-      if no_exists
-        assert_equal('no', FuncNo())
-      else
-        assert_fails('call FuncNo()', 'E117:')
-      endif
+      assert_equal('no', FuncNo())
+    enddef
+  END
+  let nono_lines =<< trim END
+    def g:DoCheck(no_exists: bool)
+      assert_equal('yes', FuncYes())
+      assert_fails('call FuncNo()', 'E117:')
     enddef
   END
 
   # FuncNo() is defined
-  writefile(first_lines + middle_lines + final_lines, 'Xreloaded.vim')
+  writefile(first_lines + withno_lines, 'Xreloaded.vim')
   source Xreloaded.vim
   g:DoCheck(true)
 
   # FuncNo() is not redefined
-  writefile(first_lines + final_lines, 'Xreloaded.vim')
+  writefile(first_lines + nono_lines, 'Xreloaded.vim')
   source Xreloaded.vim
-  g:DoCheck(false)
+  g:DoCheck()
 
   # FuncNo() is back
-  writefile(first_lines + middle_lines + final_lines, 'Xreloaded.vim')
+  writefile(first_lines + withno_lines, 'Xreloaded.vim')
   source Xreloaded.vim
-  g:DoCheck(true)
+  g:DoCheck()
 
   delete('Xreloaded.vim')
 enddef
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1599,9 +1599,9 @@ delete_script_functions(int sid)
     for (hi = func_hashtab.ht_array; todo > 0; ++hi)
 	if (!HASHITEM_EMPTY(hi))
 	{
+	    fp = HI2UF(hi);
 	    if (STRNCMP(fp->uf_name, buf, len) == 0)
 	    {
-		fp = HI2UF(hi);
 		fp->uf_flags |= FC_DEAD;
 		func_clear(fp, TRUE);
 	    }
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    653,
+/**/
     652,
 /**/
     651,