Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
yangql
googletest
Commits
271fb8ff
Commit
271fb8ff
authored
Jun 22, 2017
by
Zulkarnine Mahmud
Committed by
GitHub
Jun 22, 2017
Browse files
Fix a problem when bg_color == fg_color
Invert the intensity bit if the background_color == foreground_color
parent
365df114
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
24 additions
and
3 deletions
+24
-3
googletest/src/gtest.cc
googletest/src/gtest.cc
+24
-3
No files found.
googletest/src/gtest.cc
View file @
271fb8ff
...
...
@@ -2979,16 +2979,37 @@ void ColoredPrintf(GTestColor color, const char* fmt, ...) {
CONSOLE_SCREEN_BUFFER_INFO
buffer_info
;
GetConsoleScreenBufferInfo
(
stdout_handle
,
&
buffer_info
);
const
WORD
old_color_attrs
=
buffer_info
.
wAttributes
;
// Let's reuse the BG
const
WORD
background_mask
=
BACKGROUND_BLUE
|
BACKGROUND_GREEN
|
BACKGROUND_RED
|
BACKGROUND_INTENSITY
;
const
WORD
background_mask
=
BACKGROUND_BLUE
|
BACKGROUND_GREEN
|
BACKGROUND_RED
|
BACKGROUND_INTENSITY
;
const
WORD
foreground_mask
=
FOREGROUND_BLUE
|
FOREGROUND_GREEN
|
FOREGROUND_RED
|
FOREGROUND_INTENSITY
;
const
WORD
existing_bg
=
old_color_attrs
&
background_mask
;
WORD
new_color
=
GetColorAttribute
(
color
)
|
existing_bg
|
FOREGROUND_INTENSITY
;
#if 1 // do we really need to waste these cpu cycles every time?
int
bg_bitOffset
=
0
;
WORD
bg_mask
=
background_mask
;
while
((
bg_mask
&
0x01
)
==
0x00
)
{
bg_mask
>>=
1
;
++
bg_bitOffset
;
}
#else
const
int
bg_bitOffset
=
4
;
#endif
if
(((
new_color
&
background_mask
)
>>
bg_bitOffset
)
==
(
new_color
&
foreground_mask
))
{
//revert intensity
new_color
^=
FOREGROUND_INTENSITY
;
}
// We need to flush the stream buffers into the console before each
// SetConsoleTextAttribute call lest it affect the text that is already
// printed but has not yet reached the console.
fflush
(
stdout
);
SetConsoleTextAttribute
(
stdout_handle
,
GetColorAttribute
(
color
)
|
existing_bg
|
FOREGROUND_INTENSITY
);
SetConsoleTextAttribute
(
stdout_handle
,
new_color
);
vprintf
(
fmt
,
args
);
fflush
(
stdout
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment