--- C:/Users/sasa/AppData/Local/Temp/TortoiseGit/win4E92.tmp/win32-8e27467-left.c Thu Aug 21 04:31:19 2014 +++ C:/Application/DevKit/home/sasa/ruby/win32/win32.c Thu Aug 21 04:10:32 2014 @@ -5922,16 +5922,25 @@ p->vt100.state = constat_init; } +#define FOREGROUND_MASK (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED | FOREGROUND_INTENSITY) +#define BACKGROUND_MASK (BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED | BACKGROUND_INTENSITY) + +#define constat_attr_color_reverse(attr) \ + (attr) & ~(FOREGROUND_MASK | BACKGROUND_MASK) | \ + (((attr) & FOREGROUND_MASK) << 4) | \ + (((attr) & BACKGROUND_MASK) >> 4); + /* License: Ruby's */ static WORD constat_attr(int count, const int *seq, WORD attr, WORD default_attr) { -#define FOREGROUND_MASK (FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED) -#define BACKGROUND_MASK (BACKGROUND_BLUE | BACKGROUND_GREEN | BACKGROUND_RED) - WORD bold = attr & (FOREGROUND_INTENSITY | BACKGROUND_INTENSITY); - int rev = 0; + static WORD bold = 0; + static int rev = 0; if (!count) return attr; + attr &= ~(FOREGROUND_INTENSITY | BACKGROUND_INTENSITY); + if (rev) attr = constat_attr_color_reverse(attr); + while (count-- > 0) { switch (*seq++) { case 0: @@ -5940,7 +5949,7 @@ bold = 0; break; case 1: - bold |= rev ? BACKGROUND_INTENSITY : FOREGROUND_INTENSITY; + bold = FOREGROUND_INTENSITY; break; case 4: #ifndef COMMON_LVB_UNDERSCORE @@ -6010,12 +6019,9 @@ break; } } - if (rev) { - attr = attr & ~(FOREGROUND_MASK | BACKGROUND_MASK) | - ((attr & FOREGROUND_MASK) << 4) | - ((attr & BACKGROUND_MASK) >> 4); - } - return attr | bold; + attr |= bold; + if (rev) attr = constat_attr_color_reverse(attr); + return attr; } /* License: Ruby's */