]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/term/terminfo.c (grub_terminfo_getkey): Fix incorrect queue
authorVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 26 Apr 2012 16:55:39 +0000 (18:55 +0200)
committerVladimir 'phcoder' Serbinenko <phcoder@gmail.com>
Thu, 26 Apr 2012 16:55:39 +0000 (18:55 +0200)
handling.

ChangeLog
grub-core/term/terminfo.c

index beca299c2d38e157979b0452781669506632740b..abc6212c3731bbd8c78d395452e94e558849dea8 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2012-04-26  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/term/terminfo.c (grub_terminfo_getkey): Fix incorrect queue
+       handling.
+
 2012-04-26  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * grub-core/disk/diskfilter.c (read_segment): Fix the case when disknr
index 7481a79b48f80855021b41075ebe27da7a58ae2a..7157ee01e0cbb407fe3d80e3d1232531491fadff 100644 (file)
@@ -549,9 +549,12 @@ grub_terminfo_getkey (struct grub_term_input *termi)
     = (struct grub_terminfo_input_state *) (termi->data);
   if (data->npending)
     {
+      int ret;
       data->npending--;
-      grub_memmove (data->input_buf, data->input_buf + 1, data->npending);
-      return data->input_buf[0];
+      ret = data->input_buf[0];
+      grub_memmove (data->input_buf, data->input_buf + 1, data->npending
+                   * sizeof (data->input_buf[0]));
+      return ret;
     }
 
   grub_terminfo_readkey (termi, data->input_buf,
@@ -559,9 +562,12 @@ grub_terminfo_getkey (struct grub_term_input *termi)
 
   if (data->npending)
     {
+      int ret;
       data->npending--;
-      grub_memmove (data->input_buf, data->input_buf + 1, data->npending);
-      return data->input_buf[0];
+      ret = data->input_buf[0];
+      grub_memmove (data->input_buf, data->input_buf + 1, data->npending
+                   * sizeof (data->input_buf[0]));
+      return ret;
     }
 
   return GRUB_TERM_NO_KEY;