diff --git a/src/if_perl.xs b/src/if_perl.xs
index 09a7fba..3561085 100644
--- a/src/if_perl.xs
+++ b/src/if_perl.xs
@@ -1562,11 +1562,11 @@
 SV*
 Blob(SV* sv)
     PREINIT:
-    STRLEN  len;
-    char    *s;
-    int	    i;
-    char    buf[3];
-    SV*	    newsv;
+    STRLEN	len;
+    char	*s;
+    unsigned	i;
+    char	buf[3];
+    SV*		newsv;
 
     CODE:
     s = SvPVbyte(sv, len);
diff --git a/src/if_py_both.h b/src/if_py_both.h
index 165c847..85141e1 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -410,6 +410,12 @@
 }
 
     static int
+msg_wrapper(char *text)
+{
+    return msg((char_u *)text);
+}
+
+    static int
 write_output(OutputObject *self, PyObject *string)
 {
     Py_ssize_t	len = 0;
@@ -421,7 +427,7 @@
 
     Py_BEGIN_ALLOW_THREADS
     Python_Lock_Vim();
-    writer((writefn)(error ? emsg : msg), (char_u *)str, len);
+    writer((writefn)(error ? emsg : msg_wrapper), (char_u *)str, len);
     Python_Release_Vim();
     Py_END_ALLOW_THREADS
     PyMem_Free(str);
@@ -634,7 +640,7 @@
     else if (msg_list != NULL && *msg_list != NULL)
     {
 	int	should_free;
-	char_u	*msg;
+	char	*msg;
 
 	msg = get_exception_string(*msg_list, ET_ERROR, NULL, &should_free);
 
@@ -644,7 +650,7 @@
 	    return -1;
 	}
 
-	PyErr_SetVim((char *) msg);
+	PyErr_SetVim(msg);
 
 	free_global_msglist();
 
@@ -3483,13 +3489,13 @@
     static int
 set_option_value_err(char_u *key, int numval, char_u *stringval, int opt_flags)
 {
-    char_u	*errmsg;
+    char	*errmsg;
 
     if ((errmsg = set_option_value(key, numval, stringval, opt_flags)))
     {
 	if (VimTryEnd())
 	    return FAIL;
-	PyErr_SetVim((char *)errmsg);
+	PyErr_SetVim(errmsg);
 	return FAIL;
     }
     return OK;
diff --git a/src/integration.c b/src/integration.c
index a945815..eb6ccda 100644
--- a/src/integration.c
+++ b/src/integration.c
@@ -303,7 +303,7 @@
 			char buffer[2*MAXPATHLEN];
 			vim_snprintf(buffer, sizeof(buffer),
 					NOCATGETS("currentFile %d %s"),
-				f ? strlen(f) : 0, f ? f : "");
+				f ? (int)strlen(f) : 0, f ? f : "");
 			workshop_send_message(buffer);
 		} else if (strcmp(cmd, NOCATGETS("getCursorRow")) == 0) {
 			int row = workshop_test_getcursorrow();
@@ -322,14 +322,14 @@
 			char buffer[2*MAXPATHLEN];
 			vim_snprintf(buffer, sizeof(buffer),
 					NOCATGETS("cursorRowText %d %s"),
-				t ? strlen(t) : 0, t ? t : "");
+				t ? (int)strlen(t) : 0, t ? t : "");
 			workshop_send_message(buffer);
 		} else if (strcmp(cmd, NOCATGETS("getSelectedText")) == 0) {
 			char *t = workshop_test_getselectedtext();
 			char buffer[2*MAXPATHLEN];
 			vim_snprintf(buffer, sizeof(buffer),
 					NOCATGETS("selectedText %d %s"),
-				t ? strlen(t) : 0, t ? t : "");
+				t ? (int)strlen(t) : 0, t ? t : "");
 			workshop_send_message(buffer);
 #endif
 		}
diff --git a/src/option.c b/src/option.c
index 2d5eb32..414e65a 100644
--- a/src/option.c
+++ b/src/option.c
@@ -6965,9 +6965,9 @@
     else if (varp == &p_guifontset)
     {
 	if (STRCMP(p_guifontset, "*") == 0)
-	    errmsg = (char_u *)N_("E597: can't select fontset");
+	    errmsg = N_("E597: can't select fontset");
 	else if (gui.in_use && gui_init_font(p_guifontset, TRUE) != OK)
-	    errmsg = (char_u *)N_("E598: Invalid fontset");
+	    errmsg = N_("E598: Invalid fontset");
 	redraw_gui_only = TRUE;
     }
 # endif
@@ -7687,7 +7687,7 @@
 	    p = (char_u *)MOUSE_ALL;
 #else
 	    if (*p_mouse != NUL)
-		errmsg = (char_u *)N_("E538: No mouse support");
+		errmsg = N_("E538: No mouse support");
 #endif
 	}
 #if defined(FEAT_GUI)
diff --git a/src/version.c b/src/version.c
index d40380c..69bbcfc 100644
--- a/src/version.c
+++ b/src/version.c
@@ -796,7 +796,7 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
-    743,
+    744,
 /**/
     743,
 /**/
