updated for version 7.0093
diff --git a/src/undo.c b/src/undo.c
index 2bb5456..e586e56 100644
--- a/src/undo.c
+++ b/src/undo.c
@@ -411,6 +411,8 @@
 	    }
 	}
     }
+    else
+	uep->ue_array = NULL;
     uep->ue_next = curbuf->b_u_newhead->uh_entry;
     curbuf->b_u_newhead->uh_entry = uep;
     curbuf->b_u_synced = FALSE;
@@ -923,6 +925,7 @@
 {
     while (n)
 	U_FREE_LINE(uep->ue_array[--n]);
+    U_FREE_LINE((char_u *)uep->ue_array);
     U_FREE_LINE((char_u *)uep);
 }
 
@@ -1047,6 +1050,7 @@
 {
     while (buf->b_u_newhead != NULL)
 	u_freelist(buf, buf->b_u_newhead);
+    U_FREE_LINE(buf->b_u_line_ptr);
 }
 
 #else