diff --git a/ChangeLog b/ChangeLog
index d12a7fdde6b5e7aa6b8df31a44c3e84851b1ba22..6803a3dfd98cdfcd6b9ba72f11b1b933bb1eeb35 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -13,6 +13,8 @@ CVS Code -
   open_file()
 	- Fix FD leak with file load error (David Benbennick).
 - nano.c:
+  do_preserve_msg():
+	- Unsplit error message into a single fprintf call (Jordi).
   main()
 	- Call load_file with arg 0 for insert, as we aren't really
 	  doing an insert, allows new_file() to run if we open a 
@@ -20,8 +22,8 @@ CVS Code -
   usage()
   	- Remove gettext markings from -p/--preserve (Jordi).
 	- Revamp -H option message to fit in 80 column terminal.
-  do_preserve_msg():
-	- Unsplit error message into a single fprintf call (Jordi).
+  window_init()
+	- Fix leaking *WINDOWs (no pun intended) (David Benbennick).
 - winio.c:
   bottombars()
 	- Change strcpy of gettext() "Up" string to strncpy of max
diff --git a/nano.c b/nano.c
index 37be37a76cc417ed3951e1b7cd48dabe429d64b7..5281e925ce0e5250affda573b95678098341b9f9 100644
--- a/nano.c
+++ b/nano.c
@@ -232,6 +232,13 @@ void window_init(void)
     if ((editwinrows = LINES - 5 + no_help()) < MIN_EDITOR_ROWS)
 	die_too_small();
 
+    if (edit != NULL)
+	delwin(edit);
+    if (topwin != NULL)
+	delwin(topwin);
+    if (bottomwin != NULL)
+	delwin(bottomwin);
+
     /* Set up the main text window */
     edit = newwin(editwinrows, COLS, 2, 0);