diff --git a/src/Makefile b/src/Makefile
index 2071217..6c236ca 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -3284,7 +3284,7 @@
 Makefile:
 	@echo The name of the makefile MUST be "Makefile" (with capital M)!!!!
 
-CCCTERM = $(CCC) -Ilibvterm/include -DINLINE=""
+CCCTERM = $(CCC) -Ilibvterm/include -DINLINE="" -DVSNPRINTF=vim_vsnprintf
 objects/term_encoding.o: libvterm/src/encoding.c $(TERM_DEPS)
 	$(CCCTERM) -o $@ libvterm/src/encoding.c
 
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 3af5cd7..75ebb20 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -8043,14 +8043,15 @@
     /* Get the required length, allocate the buffer and do it for real. */
     did_emsg = FALSE;
     fmt = (char *)get_tv_string_buf(&argvars[0], buf);
-    len = vim_vsnprintf(NULL, 0, fmt, ap, argvars + 1);
+    len = vim_vsnprintf_typval(NULL, 0, fmt, ap, argvars + 1);
     if (!did_emsg)
     {
 	s = alloc(len + 1);
 	if (s != NULL)
 	{
 	    rettv->vval.v_string = s;
-	    (void)vim_vsnprintf((char *)s, len + 1, fmt, ap, argvars + 1);
+	    (void)vim_vsnprintf_typval((char *)s, len + 1, fmt,
+							      ap, argvars + 1);
 	}
     }
     did_emsg |= saved_did_emsg;
diff --git a/src/libvterm/src/vterm.c b/src/libvterm/src/vterm.c
index 8dca1b2..2931e52 100644
--- a/src/libvterm/src/vterm.c
+++ b/src/libvterm/src/vterm.c
@@ -130,16 +130,42 @@
   return vt->outbuffer_cur >= vt->outbuffer_len - 1;
 }
 
+#if _XOPEN_SOURCE >= 500 || _ISOC99_SOURCE || _BSD_SOURCE
+# undef VSNPRINTF
+# define VSNPRINTF vsnprintf
+#else
+# ifdef VSNPRINTF
+/* Use a provided vsnprintf() function. */
+int VSNPRINTF(char *str, size_t str_m, const char *fmt, va_list ap);
+# endif
+#endif
+
+
 INTERNAL void vterm_push_output_vsprintf(VTerm *vt, const char *format, va_list args)
 {
   int written;
+#ifndef VSNPRINTF
+  /* When vsnprintf() is not available (C90) fall back to vsprintf(). */
   char buffer[1024]; /* 1Kbyte is enough for everybody, right? */
+#endif
 
   if(outbuffer_is_full(vt)) {
     DEBUG_LOG("vterm_push_output(): buffer overflow; truncating output\n");
     return;
   }
 
+#ifdef VSNPRINTF
+  written = VSNPRINTF(vt->outbuffer + vt->outbuffer_cur,
+      vt->outbuffer_len - vt->outbuffer_cur,
+      format, args);
+
+  if(written == (int)(vt->outbuffer_len - vt->outbuffer_cur)) {
+    /* output was truncated */
+    vt->outbuffer_cur = vt->outbuffer_len - 1;
+  }
+  else
+    vt->outbuffer_cur += written;
+#else
   written = vsprintf(buffer, format, args);
 
   if(written >= (int)(vt->outbuffer_len - vt->outbuffer_cur)) {
@@ -151,6 +177,7 @@
     strncpy(vt->outbuffer + vt->outbuffer_cur, buffer, written + 1);
     vt->outbuffer_cur += written;
   }
+#endif
 }
 
 INTERNAL void vterm_push_output_sprintf(VTerm *vt, const char *format, ...)
diff --git a/src/message.c b/src/message.c
index aeceee1..9320d11 100644
--- a/src/message.c
+++ b/src/message.c
@@ -382,7 +382,7 @@
     va_list arglist;
 
     va_start(arglist, s);
-    vim_vsnprintf((char *)IObuff, IOSIZE, (char *)s, arglist, NULL);
+    vim_vsnprintf((char *)IObuff, IOSIZE, (char *)s, arglist);
     va_end(arglist);
     return msg(IObuff);
 }
@@ -396,7 +396,7 @@
     va_list arglist;
 
     va_start(arglist, s);
-    vim_vsnprintf((char *)IObuff, IOSIZE, (char *)s, arglist, NULL);
+    vim_vsnprintf((char *)IObuff, IOSIZE, (char *)s, arglist);
     va_end(arglist);
     return msg_attr(IObuff, attr);
 }
@@ -4232,7 +4232,7 @@
 /*
  * When va_list is not supported we only define vim_snprintf().
  *
- * vim_vsnprintf() can be invoked with either "va_list" or a list of
+ * vim_vsnprintf_typval() can be invoked with either "va_list" or a list of
  * "typval_T".  When the latter is not used it must be NULL.
  */
 
@@ -4254,7 +4254,7 @@
     else
 	space = str_m - len;
     va_start(ap, fmt);
-    str_l = vim_vsnprintf(str + len, space, fmt, ap, NULL);
+    str_l = vim_vsnprintf(str + len, space, fmt, ap);
     va_end(ap);
     return str_l;
 }
@@ -4266,7 +4266,7 @@
     int		str_l;
 
     va_start(ap, fmt);
-    str_l = vim_vsnprintf(str, str_m, fmt, ap, NULL);
+    str_l = vim_vsnprintf(str, str_m, fmt, ap);
     va_end(ap);
     return str_l;
 }
@@ -4276,6 +4276,16 @@
     char	*str,
     size_t	str_m,
     char	*fmt,
+    va_list	ap)
+{
+    return vim_vsnprintf_typval(str, str_m, fmt, ap, NULL);
+}
+
+    int
+vim_vsnprintf_typval(
+    char	*str,
+    size_t	str_m,
+    char	*fmt,
     va_list	ap,
     typval_T	*tvs)
 {
diff --git a/src/netbeans.c b/src/netbeans.c
index fb4cb76..93563b1 100644
--- a/src/netbeans.c
+++ b/src/netbeans.c
@@ -2301,7 +2301,7 @@
     va_list ap;
 
     va_start(ap, cmd);
-    vim_vsnprintf(buf, sizeof(buf), cmd, ap, NULL);
+    vim_vsnprintf(buf, sizeof(buf), cmd, ap);
     va_end(ap);
 
     nbdebug(("    COLONCMD %s\n", buf));
diff --git a/src/proto.h b/src/proto.h
index 729fea3..b5a6224 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -127,7 +127,8 @@
 #  endif
 vim_snprintf(char *, size_t, char *, ...);
 
-int vim_vsnprintf(char *str, size_t str_m, char *fmt, va_list ap, typval_T *tvs);
+int vim_vsnprintf(char *str, size_t str_m, char *fmt, va_list ap);
+int vim_vsnprintf_typval(char *str, size_t str_m, char *fmt, va_list ap, typval_T *tvs);
 
 # include "message.pro"
 # include "misc1.pro"
diff --git a/src/version.c b/src/version.c
index b4e7d2e..e284648 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    709,
+/**/
     708,
 /**/
     707,
