[libpayload] Work around sign-extending issue
authorJordan Crouse <jordan.crouse@amd.com>
Sat, 29 Mar 2008 16:13:22 +0000 (16:13 +0000)
committerUwe Hermann <uwe@hermann-uwe.de>
Sat, 29 Mar 2008 16:13:22 +0000 (16:13 +0000)
Somewhere characters are getting sign-extended, meaning that the
attributes of the drawing chars (>= 128) are wrong. Cast the value
before sending it to VGA.

Signed-off-by: Jordan Crouse <jordan.crouse@amd.com>
Acked-by: Uwe Hermann <uwe@hermann-uwe.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@3195 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1

payloads/libpayload/curses/tinycurses.c

index 776ff1604285dd2a4757b52258a2eefb2304804a..5e707c47db893a7385f01066278e5c69d1c59ad4 100644 (file)
@@ -580,7 +580,13 @@ int wnoutrefresh(WINDOW *win)
                                        c |= tmp << 12;
                                }
 
-                               c |= win->_line[y].text[x].chars[0];
+                               /*
+                                * FIXME: Somewhere along the line, the
+                                * character value is getting sign-extented.
+                                * For now grab just the 8 bit character,
+                                * but this will break wide characters!
+                                */
+                               c |= (chtype) (win->_line[y].text[x].chars[0] & 0xff);
                                vga_putc(y, x, c);
                        }
                }