]> git.eshelyaron.com Git - emacs.git/commitdiff
(w32_face_attributes): Don't use color indexes that are out of range.
authorJason Rumney <jasonr@gnu.org>
Fri, 30 Nov 2007 17:15:46 +0000 (17:15 +0000)
committerJason Rumney <jasonr@gnu.org>
Fri, 30 Nov 2007 17:15:46 +0000 (17:15 +0000)
Only reverse the default colors.

src/w32console.c

index ad0b33e0703c26c48a965dc2545ad0b01eab22f1..2774a7c842a364bf359904916ccf44ed0d8181df 100644 (file)
@@ -506,22 +506,24 @@ w32_face_attributes (f, face_id)
 
   char_attr = char_attr_normal;
 
-  if (face->foreground != FACE_TTY_DEFAULT_FG_COLOR
-      && face->foreground != FACE_TTY_DEFAULT_COLOR)
-    char_attr = (char_attr & 0xfff0) + (face->foreground % 16);
-
-  if (face->background != FACE_TTY_DEFAULT_BG_COLOR
-      && face->background != FACE_TTY_DEFAULT_COLOR)
-    char_attr = (char_attr & 0xff0f) + ((face->background % 16) << 4);
+  /* Reverse the default color if requested. If background and
+     foreground are specified, then they have been reversed already.  */
+  if (face->tty_reverse_p)
+    char_attr = (char_attr & 0xff00) + ((char_attr & 0x000f) << 4)
+      + ((char_attr & 0x00f0) >> 4);
 
   /* Before the terminal is properly initialized, all colors map to 0.
-     If we get a face like this, use the normal terminal attributes.  */
+     Don't try to resolve them.  */
   if (NILP (Vtty_defined_color_alist))
-    char_attr = char_attr_normal;
+    return char_attr;
 
-  if (face->tty_reverse_p)
-    char_attr = (char_attr & 0xff00) + ((char_attr & 0x000f) << 4)
-      + ((char_attr & 0x00f0) >> 4);
+  if (face->foreground >= 0
+      && face->foreground < 16)
+    char_attr = (char_attr & 0xfff0) + face->foreground;
+
+  if (face->background >= 0
+      && face->background < 16)
+    char_attr = (char_attr & 0xff0f) + (face->background << 4);
 
   return char_attr;
 }