diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 3c591d0..b86e481 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -3020,6 +3020,7 @@
 }
 
 #if defined(FEAT_EVAL) || defined(PROTO)
+
 /*
  * ":scriptnames"
  */
@@ -3068,6 +3069,18 @@
     return SCRIPT_ITEM(id).sn_name;
 }
 
+# if defined(EXITFREE) || defined(PROTO)
+    void
+free_scriptnames()
+{
+    int			i;
+
+    for (i = script_items.ga_len; i > 0; --i)
+	vim_free(SCRIPT_ITEM(i).sn_name);
+    ga_clear(&script_items);
+}
+# endif
+
 #endif
 
 #if defined(USE_CR) || defined(PROTO)
diff --git a/src/ex_getln.c b/src/ex_getln.c
index 51b2f25..86da1aa 100644
--- a/src/ex_getln.c
+++ b/src/ex_getln.c
@@ -55,7 +55,6 @@
 static int	hislen = 0;		/* actual length of history tables */
 
 static int	hist_char2type __ARGS((int c));
-static void	init_history __ARGS((void));
 
 static int	in_history __ARGS((int, char_u *, int));
 # ifdef FEAT_EVAL
@@ -4423,7 +4422,7 @@
  * init_history() - Initialize the command line history.
  * Also used to re-allocate the history when the size changes.
  */
-    static void
+    void
 init_history()
 {
     int		newlen;	    /* new length of history table */
diff --git a/src/misc2.c b/src/misc2.c
index ace3a90..4fdbc27 100644
--- a/src/misc2.c
+++ b/src/misc2.c
@@ -921,6 +921,103 @@
     }
 }
 
+#if defined(EXITFREE) || defined(PROTO)
+/*
+ * Free everything that we allocated.
+ * Can be used to detect memory leaks, e.g., with ccmalloc.
+ * Doesn't do nearly all that is required...
+ */
+    void
+free_all_mem()
+{
+    buf_T	*buf, *nextbuf;
+
+    ++autocmd_block;	    /* don't want to trigger autocommands here */
+
+# if defined(FEAT_SYN_HL)
+    /* Free all spell info. */
+    spell_free_all();
+# endif
+
+#if defined(FEAT_USR_CMDS)
+    /* Clear user commands (before deleting buffers). */
+    ex_comclear(NULL);
+#endif
+
+# ifdef FEAT_MENU
+    /* Clear menus. */
+    do_cmdline_cmd((char_u *)"aunmenu *");
+# endif
+
+    /* Clear mappings and abbreviations. */
+    do_cmdline_cmd((char_u *)"mapclear");
+    do_cmdline_cmd((char_u *)"mapclear!");
+    do_cmdline_cmd((char_u *)"abclear");
+
+    /* Obviously named calls. */
+# if defined(FEAT_EVAL)
+    free_scriptnames();
+    free_all_functions();
+# endif
+# if defined(FEAT_AUTOCMD)
+    free_all_autocmds();
+# endif
+    clear_termcodes();
+
+    /* Clear cmdline history. */
+    p_hi = 0;
+    init_history();
+
+    /* Free all buffers. */
+    for (buf = firstbuf; buf != NULL; )
+    {
+	nextbuf = buf->b_next;
+	close_buffer(NULL, buf, DOBUF_WIPE);
+	if (buf_valid(buf))
+	    buf = nextbuf;	/* didn't work, try next one */
+	else
+	    buf = firstbuf;
+    }
+
+#if defined(FEAT_WINDOWS)
+    /* Destroy all windows. */
+    win_free_all();
+#endif
+
+    /* Clear registers. */
+    clear_registers();
+    ResetRedobuff();
+    ResetRedobuff();
+
+    /* highlight info */
+    free_highlight();
+
+# ifdef UNIX
+    /* Machine-specific free. */
+    mch_free_mem();
+# endif
+
+    /* message history */
+    for (;;)
+	if (delete_first_msg() == FAIL)
+	    break;
+
+# ifdef FEAT_EVAL
+    eval_clear();
+# endif
+
+    /* screenlines (can't display anything now!) */
+    free_screenlines();
+
+#if defined(USE_XSMP)
+    xsmp_close();
+#endif
+
+    vim_free(IObuff);
+    vim_free(NameBuff);
+}
+#endif
+
 /*
  * copy a string into newly allocated memory
  */
diff --git a/src/ops.c b/src/ops.c
index 4502313..bbeedbf 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2602,6 +2602,21 @@
 	y_regs[i].y_array = NULL;
 }
 
+#if defined(EXITFREE) || defined(PROTO)
+    void
+clear_registers()
+{
+    int		i;
+
+    for (i = 0; i < NUM_REGISTERS; ++i)
+    {
+	y_current = &y_regs[i];
+	if (y_current->y_array != NULL)
+	    free_yank_all();
+    }
+}
+#endif
+
 /*
  * Free "n" lines from the current yank register.
  * Called for normal freeing and in case of error.
diff --git a/src/proto/eval.pro b/src/proto/eval.pro
index 13bd82a..539baa6 100644
--- a/src/proto/eval.pro
+++ b/src/proto/eval.pro
@@ -1,5 +1,6 @@
 /* eval.c */
 void eval_init __ARGS((void));
+void eval_clear __ARGS((void));
 char_u *func_name __ARGS((void *cookie));
 linenr_T *func_breakpoint __ARGS((void *cookie));
 int *func_dbg_tick __ARGS((void *cookie));
@@ -60,6 +61,7 @@
 void ex_echohl __ARGS((exarg_T *eap));
 void ex_execute __ARGS((exarg_T *eap));
 void ex_function __ARGS((exarg_T *eap));
+void free_all_functions __ARGS((void));
 void func_dump_profile __ARGS((FILE *fd));
 char_u *get_user_func_name __ARGS((expand_T *xp, int idx));
 void ex_delfunction __ARGS((exarg_T *eap));
diff --git a/src/proto/fileio.pro b/src/proto/fileio.pro
index 7d59f55..8b05113 100644
--- a/src/proto/fileio.pro
+++ b/src/proto/fileio.pro
@@ -23,6 +23,7 @@
 void forward_slash __ARGS((char_u *fname));
 void aubuflocal_remove __ARGS((buf_T *buf));
 void do_augroup __ARGS((char_u *arg, int del_group));
+void free_all_autocmds __ARGS((void));
 int check_ei __ARGS((void));
 char_u *au_event_disable __ARGS((char *what));
 void au_event_restore __ARGS((char_u *old_ei));
diff --git a/src/proto/hashtable.pro b/src/proto/hashtable.pro
index e82f175..aebb458 100644
--- a/src/proto/hashtable.pro
+++ b/src/proto/hashtable.pro
@@ -8,7 +8,6 @@
 int hash_add_item __ARGS((hashtab_T *ht, hashitem_T *hi, char_u *key, hash_T hash));
 void hash_remove __ARGS((hashtab_T *ht, hashitem_T *hi));
 void hash_lock __ARGS((hashtab_T *ht));
-void hash_lock_size __ARGS((hashtab_T *ht, int size));
 void hash_unlock __ARGS((hashtab_T *ht));
 hash_T hash_hash __ARGS((char_u *key));
 /* vim: set ft=c : */
diff --git a/src/proto/os_unix.pro b/src/proto/os_unix.pro
index 3554040..d2f5e17 100644
--- a/src/proto/os_unix.pro
+++ b/src/proto/os_unix.pro
@@ -41,6 +41,7 @@
 int mch_can_exe __ARGS((char_u *name));
 int mch_nodetype __ARGS((char_u *name));
 void mch_early_init __ARGS((void));
+void mch_free_mem __ARGS((void));
 void mch_exit __ARGS((int r));
 void mch_settmode __ARGS((int tmode));
 void get_stty __ARGS((void));
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 900f3bf..37830ca 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -3,6 +3,7 @@
 int spell_move_to __ARGS((int dir, int allwords, int curline));
 void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
 char_u *did_set_spelllang __ARGS((buf_T *buf));
+void spell_free_all __ARGS((void));
 void spell_reload __ARGS((void));
 void put_bytes __ARGS((FILE *fd, long_u nr, int len));
 void ex_mkspell __ARGS((exarg_T *eap));
diff --git a/src/proto/window.pro b/src/proto/window.pro
index f01eee0..fd3d62f 100644
--- a/src/proto/window.pro
+++ b/src/proto/window.pro
@@ -8,6 +8,7 @@
 void win_equal __ARGS((win_T *next_curwin, int current, int dir));
 void close_windows __ARGS((buf_T *buf));
 void win_close __ARGS((win_T *win, int free_buf));
+void win_free_all __ARGS((void));
 void close_others __ARGS((int message, int forceit));
 void win_init __ARGS((win_T *wp));
 void win_alloc_first __ARGS((void));
diff --git a/src/screen.c b/src/screen.c
index 595058a..dfeca60 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -6798,16 +6798,8 @@
 	current_ScreenLine = new_ScreenLines + Rows * Columns;
     }
 
-    vim_free(ScreenLines);
-#ifdef FEAT_MBYTE
-    vim_free(ScreenLinesUC);
-    vim_free(ScreenLinesC1);
-    vim_free(ScreenLinesC2);
-    vim_free(ScreenLines2);
-#endif
-    vim_free(ScreenAttrs);
-    vim_free(LineOffset);
-    vim_free(LineWraps);
+    free_screenlines();
+
     ScreenLines = new_ScreenLines;
 #ifdef FEAT_MBYTE
     ScreenLinesUC = new_ScreenLinesUC;
@@ -6855,6 +6847,21 @@
 }
 
     void
+free_screenlines()
+{
+    vim_free(ScreenLines);
+#ifdef FEAT_MBYTE
+    vim_free(ScreenLinesUC);
+    vim_free(ScreenLinesC1);
+    vim_free(ScreenLinesC2);
+    vim_free(ScreenLines2);
+#endif
+    vim_free(ScreenAttrs);
+    vim_free(LineOffset);
+    vim_free(LineWraps);
+}
+
+    void
 screenclear()
 {
     check_for_delay(FALSE);
diff --git a/src/syntax.c b/src/syntax.c
index 4fdbbbf..6092a1c 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -7067,6 +7067,18 @@
     need_highlight_changed = TRUE;
 }
 
+#if defined(EXITFREE) || defined(PROTO)
+    void
+free_highlight()
+{
+    int	    i;
+
+    for (i = 0; i < highlight_ga.ga_len; ++i)
+	highlight_clear(i);
+    ga_clear(&highlight_ga);
+}
+#endif
+
 /*
  * Reset the cterm colors to what they were before Vim was started, if
  * possible.  Otherwise reset them to zero.
diff --git a/src/undo.c b/src/undo.c
index 0ad3ae1..2bb5456 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -949,7 +949,7 @@
 {
     if (lnum == curbuf->b_u_line_lnum)	    /* line is already saved */
 	return;
-    if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count)	/* should never happen */
+    if (lnum < 1 || lnum > curbuf->b_ml.ml_line_count) /* should never happen */
 	return;
     u_clearline();
     curbuf->b_u_line_lnum = lnum;
diff --git a/src/version.h b/src/version.h
index 01c298e..4de29d0 100644
--- a/src/version.h
+++ b/src/version.h
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT	"vim70aa"
 #define VIM_VERSION_SHORT	"7.0aa"
 #define VIM_VERSION_MEDIUM	"7.0aa ALPHA"
-#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 23)"
-#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 23, compiled "
+#define VIM_VERSION_LONG	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 24)"
+#define VIM_VERSION_LONG_DATE	"VIM - Vi IMproved 7.0aa ALPHA (2005 Jun 24, compiled "
