+2014-01-28 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * terminal.c (initial_free_frame_resources): New function.
+ (init_initial_terminal): Install new hook to free face cache
+ on initial frame and avoid memory leak. For details, see
+ <http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01974.html>.
+
2014-01-26 Paul Eggert <eggert@cs.ucla.edu>
* data.c (Fstring_to_number): Document results if unparsable
return store_terminal_param (t, parameter, value);
}
-\f
+/* Initial frame has no device-dependent output data, but has
+ face cache which should be freed when the frame is deleted. */
+
+static void
+initial_free_frame_resources (struct frame *f)
+{
+ eassert (FRAME_INITIAL_P (f));
+ free_frame_faces (f);
+}
/* Create the bootstrap display terminal for the initial frame.
Returns a terminal of type output_initial. */
initial_terminal->name = xstrdup ("initial_terminal");
initial_terminal->kboard = initial_kboard;
initial_terminal->delete_terminal_hook = &delete_initial_terminal;
+ initial_terminal->delete_frame_hook = &initial_free_frame_resources;
/* All other hooks are NULL. */
return initial_terminal;