diff --git a/src/ex_getln.c b/src/ex_getln.c
index 163c474..93d612a 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -628,7 +628,7 @@
 	    return FAIL;
 	}
 	skiplen = 0;
-	patlen = last_search_pattern_len();
+	patlen = (int)last_search_pattern_len();
     }
     else
 	pat = ccline.cmdbuff + skiplen;
@@ -1472,7 +1472,7 @@
 		}
 		if (i == 0)
 		{
-		    alloc_cmdbuff(len);
+		    alloc_cmdbuff((int)len);
 		    if (ccline.cmdbuff == NULL)
 		    {
 			res = GOTO_NORMAL_MODE;
@@ -1481,18 +1481,18 @@
 		}
 	    }
 	    ccline.cmdbuff[len] = NUL;
-	    ccline.cmdpos = ccline.cmdlen = len;
+	    ccline.cmdpos = ccline.cmdlen = (int)len;
 	}
 	else
 	{
-	    alloc_cmdbuff(plen);
+	    alloc_cmdbuff((int)plen);
 	    if (ccline.cmdbuff == NULL)
 	    {
 		res = GOTO_NORMAL_MODE;
 		goto done;
 	    }
 	    STRCPY(ccline.cmdbuff, p);
-	    ccline.cmdpos = ccline.cmdlen = plen;
+	    ccline.cmdpos = ccline.cmdlen = (int)plen;
 	}
 
 	redrawcmd();
@@ -4778,8 +4778,8 @@
 	    {
 		// Execute the command directly.
 		ccline.cmdbuff = vim_strnsave(p, plen);
-		ccline.cmdlen = plen;
-		ccline.cmdbufflen = plen + 1;
+		ccline.cmdlen = (int)plen;
+		ccline.cmdbufflen = (int)(plen + 1);
 		cmdwin_result = CAR;
 	    }
 	    else
diff --git a/src/filepath.c b/src/filepath.c
index 3dd71bc..1ac2f86 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -675,7 +675,7 @@
 			    if (s != NULL)
 			    {
 				*fnamep = s;
-				*fnamelen = slen;
+				*fnamelen = (int)slen;
 				vim_free(*bufp);
 				*bufp = s;
 				didit = TRUE;
diff --git a/src/option.c b/src/option.c
index f069d0f..e4c52bd 100644
--- a/src/option.c
+++ b/src/option.c
@@ -193,7 +193,7 @@
 		itemlen = vim_snprintf((char *)item, itemsize, "%s%s*", p, (has_trailing_path_sep) ? "" : PATHSEPSTR);
 
 		if (find_dup_item(ga.ga_data, item, itemlen, options[opt_idx].flags) == NULL
-			&& ga_grow(&ga, itemseplen + itemlen + 1) == OK)
+			&& ga_grow(&ga, (int)(itemseplen + itemlen + 1)) == OK)
 		{
 		    ga.ga_len += vim_snprintf((char *)ga.ga_data + ga.ga_len,
 				    itemseplen + itemlen + 1,
@@ -8415,7 +8415,7 @@
 		if (vim_getenv((char_u *)"MYVIMDIR", &dofree) == NULL)
 		{
 		    size_t  usedlen = 0;
-		    int     len = 0;
+		    size_t  len = 0;
 		    char_u  *fbuf = NULL;
 
 		    if (STRNCMP(gettail(fname), ".vimrc", 6) == 0)
@@ -8452,7 +8452,7 @@
 		    }
 #endif
 		    else
-			(void)modify_fname((char_u *)":h", FALSE, &usedlen, &p, &fbuf, &len);
+			(void)modify_fname((char_u *)":h", FALSE, &usedlen, &p, &fbuf, (int *)&len);
 
 		    if (p != NULL)
 		    {
diff --git a/src/undo.c b/src/undo.c
index 52df939..764912a 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -3124,7 +3124,7 @@
 
 	    // we have to call STRLEN() here because add_time() does not report
 	    // the number of characters added.
-	    len += STRLEN(IObuff + len);
+	    len += (int)STRLEN(IObuff + len);
 	    if (uhp->uh_save_nr > 0)
 	    {
 		int n = (len >= 33) ? 0 : 33 - len;
diff --git a/src/usercmd.c b/src/usercmd.c
index c0d1bdb..ff2c353 100644
--- a/src/usercmd.c
+++ b/src/usercmd.c
@@ -671,7 +671,7 @@
 	    if (entry != NULL)
 	    {
 		STRCPY(IObuff + len, entry->value.string);
-		len += entry->value.length;
+		len += (int)entry->value.length;
 #ifdef FEAT_EVAL
 		if (p_verbose > 0 && cmd->uc_compl_arg != NULL)
 		{
@@ -681,7 +681,7 @@
 		    {
 			IObuff[len++] = ',';
 			STRCPY(IObuff + len, cmd->uc_compl_arg);
-			len += uc_compl_arglen;
+			len += (int)uc_compl_arglen;
 		    }
 		}
 #endif
diff --git a/src/version.c b/src/version.c
index 7006039..8fa6c69 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    957,
+/**/
     956,
 /**/
     955,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index c840963..c8a50cf 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -1838,7 +1838,7 @@
     int		script_var = FALSE;
     imported_T	*import;
     char_u	*var_name;
-    int		var_name_len;
+    size_t	var_name_len;
 
     if (lhs->lhs_varlen > 1 && STRNCMP(var_start, "s:", 2) == 0)
 	script_namespace = TRUE;
diff --git a/src/vim9execute.c b/src/vim9execute.c
index f20ff40..de49aaa 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -3184,7 +3184,7 @@
     copy_tv(tv, &mtv);
 
     // 'name' can either be a object variable or a object method
-    int		namelen = STRLEN(iptr->isn_arg.string);
+    int		namelen = (int)STRLEN(iptr->isn_arg.string);
     int		save_did_emsg = did_emsg;
 
     if (get_member_tv(obj->obj_class, TRUE, iptr->isn_arg.string, namelen,
diff --git a/src/viminfo.c b/src/viminfo.c
index 0a433a7..5f1ad74 100644
--- a/src/viminfo.c
+++ b/src/viminfo.c
@@ -1142,7 +1142,7 @@
 			// freed later, also need to free "buf" later
 			value->bv_tofree = buf;
 		    s = sconv;
-		    len = STRLEN(s);
+		    len = (int)STRLEN(s);
 		    converted = TRUE;
 		}
 	    }
