diff --git a/src/eval.c b/src/eval.c
index fb07e5e..dc38936 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -708,6 +708,32 @@
     }
 }
 
+#if defined(EXITFREE) || defined(PROTO)
+    void
+eval_clear()
+{
+    int		    i;
+    struct vimvar   *p;
+
+    for (i = 0; i < VV_LEN; ++i)
+    {
+	p = &vimvars[i];
+	if (p->vv_di.di_tv.v_type == VAR_STRING)
+	    vim_free(p->vv_di.di_tv.vval.v_string);
+    }
+    hash_clear(&vimvarht);
+    hash_clear(&compat_hashtab);
+
+    /* script-local variables */
+    for (i = 1; i <= ga_scripts.ga_len; ++i)
+	vars_clear(&SCRIPT_VARS(i));
+    ga_clear(&ga_scripts);
+
+    /* global variables */
+    vars_clear(&globvarht);
+}
+#endif
+
 /*
  * Return the name of the executed function.
  */
@@ -16406,7 +16432,21 @@
 
 	/* Add the line to the function. */
 	if (ga_grow(&newlines, 1) == FAIL)
+	{
+	    vim_free(theline);
 	    goto erret;
+	}
+
+	/* Copy the line to newly allocated memory.  get_one_sourceline()
+	 * allocates 250 bytes per line, this saves 80% on average.  The cost
+	 * is an extra alloc/free. */
+	p = vim_strsave(theline);
+	if (p != NULL)
+	{
+	    vim_free(theline);
+	    theline = p;
+	}
+
 	((char_u **)(newlines.ga_data))[newlines.ga_len] = theline;
 	newlines.ga_len++;
     }
@@ -16808,6 +16848,24 @@
     return NULL;
 }
 
+#if defined(EXITFREE) || defined(PROTO)
+    void
+free_all_functions()
+{
+    hashitem_T	*hi;
+
+    /* Need to start all over every time, because func_free() may change the
+     * hash table. */
+    while (func_hashtab.ht_used > 0)
+	for (hi = func_hashtab.ht_array; ; ++hi)
+	    if (!HASHITEM_EMPTY(hi))
+	    {
+		func_free(HI2UF(hi));
+		break;
+	    }
+}
+#endif
+
 /*
  * Return TRUE if a function "name" exists.
  */
diff --git a/src/proto/ex_cmds2.pro b/src/proto/ex_cmds2.pro
index 4914a44..66584f5 100644
--- a/src/proto/ex_cmds2.pro
+++ b/src/proto/ex_cmds2.pro
@@ -61,6 +61,7 @@
 int *source_dbg_tick __ARGS((void *cookie));
 int source_level __ARGS((void *cookie));
 int do_source __ARGS((char_u *fname, int check_other, int is_vimrc));
+void free_scriptnames __ARGS((void));
 void ex_scriptnames __ARGS((exarg_T *eap));
 void scriptnames_slash_adjust __ARGS((void));
 char_u *get_scriptname __ARGS((scid_T id));
diff --git a/src/proto/misc2.pro b/src/proto/misc2.pro
index 6d79631..936f38f 100644
--- a/src/proto/misc2.pro
+++ b/src/proto/misc2.pro
@@ -24,6 +24,7 @@
 char_u *lalloc __ARGS((long_u size, int message));
 void *mem_realloc __ARGS((void *ptr, size_t size));
 void do_outofmem_msg __ARGS((long_u size));
+void free_all_mem __ARGS((void));
 char_u *vim_strsave __ARGS((char_u *string));
 char_u *vim_strnsave __ARGS((char_u *string, int len));
 char_u *vim_strsave_escaped __ARGS((char_u *string, char_u *esc_chars));
diff --git a/src/proto/screen.pro b/src/proto/screen.pro
index 6831d42..b5b6eec 100644
--- a/src/proto/screen.pro
+++ b/src/proto/screen.pro
@@ -29,6 +29,7 @@
 void check_for_delay __ARGS((int check_msg_scroll));
 int screen_valid __ARGS((int clear));
 void screenalloc __ARGS((int clear));
+void free_screenlines __ARGS((void));
 void screenclear __ARGS((void));
 int can_clear __ARGS((char_u *p));
 void screen_start __ARGS((void));
