]> git.proxmox.com Git - grub2.git/commitdiff
* grub-core/term/gfxterm.c (grub_gfxterm_term_fini): Free the text buffer.
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 28 Aug 2010 13:28:08 +0000 (15:28 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Sat, 28 Aug 2010 13:28:08 +0000 (15:28 +0200)
(scroll_up): Fix a memory leak.

ChangeLog
grub-core/term/gfxterm.c

index dc24ebf009d274018a2d69e58b7e2d11e032ec50..fb5f6ef917b9079e83faa2de4a5b77fa24cb16b7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/term/gfxterm.c (grub_gfxterm_term_fini): Free the text buffer.
+       (scroll_up): Fix a memory leak.
+
 2010-08-28  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/fs/nilfs2.c (grub_nilfs2_load_sb): Handle grub_disk_read
index bf9705abd880aa1f0ea218c83ed851711e50f4a9..5f88f91edf58c65995aae4d81d3cb3e8dca654ad 100644 (file)
@@ -405,9 +405,16 @@ destroy_window (void)
 static grub_err_t
 grub_gfxterm_term_fini (struct grub_term_output *term __attribute__ ((unused)))
 {
+  unsigned i;
   destroy_window ();
   grub_video_restore ();
 
+  for (i = 0; i < virtual_screen.columns * virtual_screen.rows; i++)
+    {
+      grub_free (virtual_screen.text_buffer[i].code);
+      virtual_screen.text_buffer[i].code = 0;
+    }
+
   /* Clear error state.  */
   grub_errno = GRUB_ERR_NONE;
   return GRUB_ERR_NONE;
@@ -793,13 +800,8 @@ scroll_up (void)
   unsigned int i;
 
   /* Clear first line in text buffer.  */
-  for (i = 0;
-       i < virtual_screen.columns;
-       i++)
-    {
-      virtual_screen.text_buffer[i].code = 0;
-      clear_char (&(virtual_screen.text_buffer[i]));
-    }
+  for (i = 0; i < virtual_screen.columns; i++)
+    grub_free (virtual_screen.text_buffer[i].code);
 
   /* Scroll text buffer with one line to up.  */
   grub_memmove (virtual_screen.text_buffer,