updated for version 7.0169
diff --git a/src/eval.c b/src/eval.c
index fe3c5a7..fb8e005 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -15712,6 +15712,8 @@
 # ifdef FEAT_MBYTE
     if (eap->force_enc != 0)
 	len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
+    if (eap->bad_char != 0)
+	len += (unsigned)STRLEN(eap->cmd + eap->bad_char) + 7;
 # endif
 
     newval = alloc(len + 1);
@@ -15731,6 +15733,9 @@
     if (eap->force_enc != 0)
 	sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
 					       eap->cmd + eap->force_enc);
+    if (eap->bad_char != 0)
+	sprintf((char *)newval + STRLEN(newval), " ++bad=%s",
+					       eap->cmd + eap->bad_char);
 # endif
     vimvars[VV_CMDARG].vv_str = newval;
     return oldval;
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index c5adaeb..87c9e6a 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -996,9 +996,10 @@
     int		amount;		/* number of '>' or '<' for shift command */
     int		regname;	/* register name (NUL if none) */
     int		force_bin;	/* 0, FORCE_BIN or FORCE_NOBIN */
-    int		force_ff;	/* forced 'fileformat' (index in cmd[]) */
+    int		force_ff;	/* ++ff= argument (index in cmd[]) */
 #ifdef FEAT_MBYTE
-    int		force_enc;	/* forced 'encoding' (index in cmd[]) */
+    int		force_enc;	/* ++enc= argument (index in cmd[]) */
+    int		bad_char;	/* ++bad= argument (index in cmd[]) */
 #endif
 #ifdef FEAT_USR_CMDS
     int		useridx;	/* user command index */