patch 8.2.0537: Vim9: no check for sandbox when setting v:var

Problem:    Vim9: no check for sandbox when setting v:var.
Solution:   Check for sandbox.
diff --git a/src/evalvars.c b/src/evalvars.c
index 8af80ec..d32b76a 100644
--- a/src/evalvars.c
+++ b/src/evalvars.c
@@ -1978,6 +1978,17 @@
 	clear_tv(tv);
 	return FAIL;
     }
+    // VV_RO is also checked when compiling, but let's check here as well.
+    if (vimvars[idx].vv_flags & VV_RO)
+    {
+	semsg(_(e_readonlyvar), vimvars[idx].vv_name);
+	return FAIL;
+    }
+    if (sandbox && (vimvars[idx].vv_flags & VV_RO_SBX))
+    {
+	semsg(_(e_readonlysbx), vimvars[idx].vv_name);
+	return FAIL;
+    }
     clear_tv(&vimvars[idx].vv_di.di_tv);
     vimvars[idx].vv_di.di_tv = *tv;
     return OK;
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index cab9f86..4e0dc1b 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -170,6 +170,11 @@
   assert_equal(5678, nr)
 enddef
 
+def Mess(): string
+  v:foldstart = 123
+  return 'xxx'
+enddef
+
 func Test_assignment_failure()
   call CheckDefFailure(['let var=234'], 'E1004:')
   call CheckDefFailure(['let var =234'], 'E1004:')
@@ -207,6 +212,9 @@
 
   call CheckDefFailure(['let var: dict <number>'], 'E1068:')
   call CheckDefFailure(['let var: dict<number'], 'E1009:')
+
+  call assert_fails('s/^/\=Mess()/n', 'E794:')
+  call CheckDefFailure(['let var: dict<number'], 'E1009:')
 endfunc
 
 func Test_wrong_type()
diff --git a/src/version.c b/src/version.c
index 1faac96..fece1a1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    537,
+/**/
     536,
 /**/
     535,