patch 8.2.2313: Vim9: using uninitialized field when parsing range

Problem:    Vim9: using uninitialized field when parsing range. ":silent!" not
            respected when parsing range fails.
Solution:   Initialize ea.skip.  On pattern failure handle it like an error.
            (closes #7636)
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index 5b84fec..f5cb1c8 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -661,6 +661,12 @@
   bwipe!
 enddef
 
+def Test_silent_pattern()
+  new
+  silent! :/pat/put _
+  bwipe!
+enddef
+
 def Test_eval_command()
   var from = 3
   var to = 5
diff --git a/src/version.c b/src/version.c
index 9604650..9e49e6d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2313,
+/**/
     2312,
 /**/
     2311,
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 1376148..44180b8 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -3148,11 +3148,13 @@
 			goto failed;
 		    ++ectx.ec_stack.ga_len;
 		    tv = STACK_TV_BOT(-1);
+		    ea.line2 = 0;
 		    ea.addr_count = 0;
 		    ea.addr_type = ADDR_LINES;
 		    ea.cmd = iptr->isn_arg.string;
+		    ea.skip = FALSE;
 		    if (parse_cmd_address(&ea, &errormsg, FALSE) == FAIL)
-			goto failed;
+			goto on_error;
 		    if (ea.addr_count == 0)
 			tv->vval.v_number = curwin->w_cursor.lnum;
 		    else