diff --git a/src/gui_riscos.c b/src/gui_riscos.c
index 6adc8b7..90634fa 100644
--- a/src/gui_riscos.c
+++ b/src/gui_riscos.c
@@ -695,7 +695,7 @@
 gui_mch_set_shellsize(width, height, min_width, min_height, base_width, base_height, direction)
     int width;		/* In OS units */
     int height;
-    int min_width;	/* Smallest permissable window size (ignored) */
+    int min_width;	/* Smallest permissible window size (ignored) */
     int min_height;
     int base_width;	/* Space for scroll bars, etc */
     int base_height;
@@ -863,7 +863,7 @@
     if (strncmp(file, "ZapFont\015", 8) == 0)
 	return file;	/* Loaded OK! */
 
-    free(file);
+    vim_free(file);
     return NULL;	/* Not a valid font file */
 }
 
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 8b96f2b..53dbad1 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -3335,7 +3335,7 @@
 
 /*
  * Convert the string s to the proper format for a filter string by replacing
- * the \t and \n delimeters with \0.
+ * the \t and \n delimiters with \0.
  * Returns the converted string in allocated memory.
  *
  * Keep in sync with convert_filterW() above!
@@ -3674,7 +3674,8 @@
  * Use "prog" as the name of the program and "cmdline" as the arguments.
  * Copy the arguments to allocated memory.
  * Return the number of arguments (including program name).
- * Return pointers to the arguments in "argvp".
+ * Return pointers to the arguments in "argvp".  Memory is allocated with
+ * malloc(), use free() instead of vim_free().
  * Return pointer to buffer in "tofree".
  * Returns zero when out of memory.
  */
@@ -3692,6 +3693,8 @@
     char	**argv = NULL;
     int		round;
 
+    *tofree = NULL;
+
 #ifdef FEAT_MBYTE
     /* Try using the Unicode version first, it takes care of conversion when
      * 'encoding' is changed. */
@@ -3802,15 +3805,15 @@
 	    argv = (char **)malloc((argc + 1) * sizeof(char *));
 	    if (argv == NULL )
 	    {
-		vim_free(newcmdline);
+		free(newcmdline);
 		return 0;		   /* malloc error */
 	    }
 	    pnew = newcmdline;
+	    *tofree = newcmdline;
 	}
     }
 
 done:
-
     argv[argc] = NULL;		/* NULL-terminated list */
     *argvp = argv;
     return argc;
diff --git a/src/os_vms.c b/src/os_vms.c
index 76a15ce..7954294 100644
--- a/src/os_vms.c
+++ b/src/os_vms.c
@@ -228,7 +228,7 @@
     else if ((sbuf = getenv((char *)lognam)))
     {
 	lengte = strlen(sbuf) + 1;
-	cp = (char_u *)malloc((size_t)lengte);
+	cp = (char_u *)alloc((size_t)lengte);
 	if (cp)
 	    strcpy((char *)cp, sbuf);
 	return cp;
@@ -381,7 +381,7 @@
     if (--vms_match_free == 0) {
 	/* add more space to store matches */
 	vms_match_alloced += EXPL_ALLOC_INC;
-	vms_fmatch = (char_u **)realloc(vms_fmatch,
+	vms_fmatch = (char_u **)vim_realloc(vms_fmatch,
 		sizeof(char **) * vms_match_alloced);
 	if (!vms_fmatch)
 	    return 0;
@@ -460,7 +460,7 @@
 	    if (--files_free < 1)
 	    {
 		files_alloced += EXPL_ALLOC_INC;
-		*file = (char_u **)realloc(*file,
+		*file = (char_u **)vim_realloc(*file,
 		    sizeof(char_u **) * files_alloced);
 		if (*file == NULL)
 		{
@@ -614,14 +614,14 @@
     {
 	buflen = len + 128;
 	if (buf)
-	    buf = (char *)realloc(buf, buflen);
+	    buf = (char *)vim_realloc(buf, buflen);
 	else
-	    buf = (char *)calloc(buflen, sizeof(char));
+	    buf = (char *)alloc(buflen * sizeof(char));
     }
 
 #ifdef DEBUG
      char		 *tmpbuf = NULL;
-     tmpbuf = (char *)calloc(buflen, sizeof(char));
+     tmpbuf = (char *)alloc(buflen * sizeof(char));
      strcpy(tmpbuf, instring);
 #endif
 
diff --git a/src/os_w32exe.c b/src/os_w32exe.c
index 76f9332..93a1389 100644
--- a/src/os_w32exe.c
+++ b/src/os_w32exe.c
@@ -129,7 +129,8 @@
 errout:
 #endif
     free(argv);
-    free(tofree);
+    if (tofree != NULL)
+	free(tofree);
 #ifdef FEAT_MBYTE
     free_cmd_argsW();
 #endif
diff --git a/src/os_win16.c b/src/os_win16.c
index 2afaddc..1cf3ff8 100644
--- a/src/os_win16.c
+++ b/src/os_win16.c
@@ -121,7 +121,8 @@
     pmain(argc, argv);
 
     free(argv);
-    free(tofree);
+    if (tofree != NULL)
+	free(tofree);
 
     return 0;
 }
diff --git a/src/version.c b/src/version.c
index b104925..3d68f70 100644
--- a/src/version.c
+++ b/src/version.c
@@ -677,6 +677,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    36,
+/**/
     35,
 /**/
     34,
