* grub-core/normal/cmdline.c (grub_cmdline_get): Fix Ctrl-u

handling to copy the killed characters to the kill buffer as
	UCS4 stored as grub_uint32_t rather than as 8-bit characters
	stored as char.  Eliminates UCS4 truncation and corruption
	observed when killing characters with Ctrl-u and yanking them
	back with Ctrl-y.
This commit is contained in:
Josh Triplett 2013-05-31 00:59:02 +02:00 committed by Vladimir 'phcoder' Serbinenko
parent fc4c4fddf6
commit e40b459617
2 changed files with 12 additions and 3 deletions

View file

@ -1,3 +1,12 @@
2013-05-30 Josh Triplett <josh@joshtriplett.org>
* grub-core/normal/cmdline.c (grub_cmdline_get): Fix Ctrl-u
handling to copy the killed characters to the kill buffer as
UCS4 stored as grub_uint32_t rather than as 8-bit characters
stored as char. Eliminates UCS4 truncation and corruption
observed when killing characters with Ctrl-u and yanking them
back with Ctrl-y.
2013-05-30 Vladimir Serbinenko <phcoder@gmail.com> 2013-05-30 Vladimir Serbinenko <phcoder@gmail.com>
Detach optional parts of gfxterm and integrate in with coreboot init. Detach optional parts of gfxterm and integrate in with coreboot init.

View file

@ -587,7 +587,7 @@ grub_cmdline_get (const char *prompt_translated)
grub_free (kill_buf); grub_free (kill_buf);
kill_buf = grub_malloc (n + 1); kill_buf = grub_malloc ((n + 1) * sizeof(grub_uint32_t));
if (grub_errno) if (grub_errno)
{ {
grub_print_error (); grub_print_error ();
@ -595,8 +595,8 @@ grub_cmdline_get (const char *prompt_translated)
} }
if (kill_buf) if (kill_buf)
{ {
grub_memcpy (kill_buf, buf, n); grub_memcpy (kill_buf, buf, n * sizeof(grub_uint32_t));
kill_buf[n] = '\0'; kill_buf[n] = 0;
} }
lpos = 0; lpos = 0;