diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 0f0e627..9640c50 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -3061,9 +3061,11 @@
  * Return TRUE if "cmod" has anything set.
  */
     int
-has_cmdmod(cmdmod_T *cmod)
+has_cmdmod(cmdmod_T *cmod, int ignore_silent)
 {
-    return cmod->cmod_flags != 0
+    return (cmod->cmod_flags != 0 && (!ignore_silent
+		|| (cmod->cmod_flags
+		      & ~(CMOD_SILENT | CMOD_ERRSILENT | CMOD_UNSILENT)) != 0))
 	    || cmod->cmod_split != 0
 	    || cmod->cmod_verbose != 0
 	    || cmod->cmod_tab != 0
@@ -3074,9 +3076,9 @@
  * If Vim9 script and "cmdmod" has anything set give an error and return TRUE.
  */
     int
-cmdmod_error(void)
+cmdmod_error(int ignore_silent)
 {
-    if (in_vim9script() && has_cmdmod(&cmdmod))
+    if (in_vim9script() && has_cmdmod(&cmdmod, ignore_silent))
     {
 	emsg(_(e_misplaced_command_modifier));
 	return TRUE;
diff --git a/src/ex_eval.c b/src/ex_eval.c
index 6bc7c18..207defa 100644
--- a/src/ex_eval.c
+++ b/src/ex_eval.c
@@ -1026,7 +1026,7 @@
 {
     cstack_T	*cstack = eap->cstack;
 
-    if (cmdmod_error())
+    if (cmdmod_error(FALSE))
 	return;
     did_endif = TRUE;
     if (cstack->cs_idx < 0
@@ -1355,7 +1355,7 @@
     int		csf;
     int		fl;
 
-    if (cmdmod_error())
+    if (cmdmod_error(TRUE))
 	return;
 
     if (eap->cmdidx == CMD_endwhile)
@@ -1593,7 +1593,7 @@
     int		skip;
     cstack_T	*cstack = eap->cstack;
 
-    if (cmdmod_error())
+    if (cmdmod_error(FALSE))
 	return;
 
     if (cstack->cs_idx == CSTACK_LEN - 1)
@@ -1674,7 +1674,7 @@
     cstack_T	*cstack = eap->cstack;
     char_u	*pat;
 
-    if (cmdmod_error())
+    if (cmdmod_error(FALSE))
 	return;
 
     if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0)
@@ -1839,7 +1839,7 @@
     int		pending = CSTP_NONE;
     cstack_T	*cstack = eap->cstack;
 
-    if (cmdmod_error())
+    if (cmdmod_error(FALSE))
 	return;
 
     if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0)
@@ -1971,7 +1971,7 @@
     void	*rettv = NULL;
     cstack_T	*cstack = eap->cstack;
 
-    if (cmdmod_error())
+    if (cmdmod_error(FALSE))
 	return;
 
     if (cstack->cs_trylevel <= 0 || cstack->cs_idx < 0)
diff --git a/src/proto/ex_docmd.pro b/src/proto/ex_docmd.pro
index f96f8cf..5371439 100644
--- a/src/proto/ex_docmd.pro
+++ b/src/proto/ex_docmd.pro
@@ -10,8 +10,8 @@
 int checkforcmd(char_u **pp, char *cmd, int len);
 int checkforcmd_noparen(char_u **pp, char *cmd, int len);
 int parse_command_modifiers(exarg_T *eap, char **errormsg, cmdmod_T *cmod, int skip_only);
-int has_cmdmod(cmdmod_T *cmod);
-int cmdmod_error(void);
+int has_cmdmod(cmdmod_T *cmod, int ignore_silent);
+int cmdmod_error(int ignore_silent);
 void apply_cmdmod(cmdmod_T *cmod);
 void undo_cmdmod(cmdmod_T *cmod);
 int parse_cmd_address(exarg_T *eap, char **errormsg, int silent);
@@ -32,7 +32,7 @@
 int ends_excmd2(char_u *cmd_start, char_u *cmd);
 char_u *find_nextcmd(char_u *p);
 char_u *check_nextcmd(char_u *p);
-void set_nextcmd(exarg_T *eap, char_u *p);
+void set_nextcmd(exarg_T *eap, char_u *arg);
 char_u *get_command_name(expand_T *xp, int idx);
 void not_exiting(void);
 int before_quit_autocmds(win_T *wp, int quit_all, int forceit);
diff --git a/src/testdir/test_vim9_cmd.vim b/src/testdir/test_vim9_cmd.vim
index a624113..84cb6d6 100644
--- a/src/testdir/test_vim9_cmd.vim
+++ b/src/testdir/test_vim9_cmd.vim
@@ -807,6 +807,17 @@
     echomsg "caught"
   endtry
   assert_equal("\ncaught", execute(':1messages'))
+
+  var lines =<< trim END
+      vim9script
+      set history=11
+      silent! while 0
+        set history=22
+      silent! endwhile
+      assert_equal(11, &history)
+      set history&
+  END
+  CheckScriptSuccess(lines)
 enddef
 
 def Test_range_after_command_modifier()
@@ -836,13 +847,16 @@
       for i in [0]
       silent endfor
   END
-  CheckDefAndScriptFailure(lines, 'E1176:', 2)
+  CheckDefFailure(lines, 'E1176:', 2)
+  CheckScriptSuccess(['vim9script'] + lines)
 
   lines =<< trim END
       while g:maybe
       silent endwhile
   END
-  CheckDefAndScriptFailure(lines, 'E1176:', 2)
+  CheckDefFailure(lines, 'E1176:', 2)
+  g:maybe = false
+  CheckScriptSuccess(['vim9script'] + lines)
 
   lines =<< trim END
       silent try
diff --git a/src/version.c b/src/version.c
index 88dc354..0255bf6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3324,
+/**/
     3323,
 /**/
     3322,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 6bb1090..127d5a6 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -2344,7 +2344,7 @@
 {
     isn_T	*isn;
 
-    if (has_cmdmod(cmod))
+    if (has_cmdmod(cmod, FALSE))
     {
 	cctx->ctx_has_cmdmod = TRUE;
 
