diff --git a/src/terminal.c b/src/terminal.c
index 9833a43..4cc755c 100644
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -35,6 +35,7 @@
  * TODO:
  * - include functions from #1871
  * - do not store terminal buffer in viminfo.  Or prefix term:// ?
+ * - Make CTRL-W . send CTRL-W to terminal?
  * - Add a scrollback buffer (contains lines to scroll off the top).
  *   Can use the buf_T lines, store attributes somewhere else?
  * - When the job ends:
@@ -204,7 +205,7 @@
     {
 	int	i;
 	size_t	len = STRLEN(cmd) + 10;
-	char_u	*p = alloc(len);
+	char_u	*p = alloc((int)len);
 
 	for (i = 1; p != NULL; ++i)
 	{
@@ -301,7 +302,7 @@
 	{
 	    if (*p == NL)
 		break;
-	    p += utf_ptr2len_len(p, len - (p - msg));
+	    p += utf_ptr2len_len(p, (int)(len - (p - msg)));
 	}
 	len_now = p - msg - done;
 	vterm_input_write(vterm, (char *)msg + done, len_now);
@@ -453,7 +454,7 @@
 	vterm_keyboard_unichar(vterm, c, mod);
 
     /* Read back the converted escape sequence. */
-    return vterm_output_read(vterm, buf, KEY_BUF_LEN);
+    return (int)vterm_output_read(vterm, buf, KEY_BUF_LEN);
 }
 
 /*
@@ -540,7 +541,7 @@
 	if (len > 0)
 	    /* TODO: if FAIL is returned, stop? */
 	    channel_send(curbuf->b_term->tl_job->jv_channel, PART_IN,
-						     (char_u *)buf, len, NULL);
+						     (char_u *)buf, (int)len, NULL);
     }
 }
 
@@ -1056,7 +1057,7 @@
 	else
 	    txt = (char_u *)_("finished");
 	len = 9 + STRLEN(term->tl_buffer->b_fname) + STRLEN(txt);
-	term->tl_status_text = alloc(len);
+	term->tl_status_text = alloc((int)len);
 	if (term->tl_status_text != NULL)
 	    vim_snprintf((char *)term->tl_status_text, len, "%s [%s]",
 						term->tl_buffer->b_fname, txt);
