non-ASCII charactors are interpreted as Shift-JIS on the environment.
But the charators in the files are non Shift-JIS charactors and the compiler
stops compiling with C4819.
To fix the errors, remove non-ASCII charactors.
Internal CL 156157936, which was published in commit
fe402c27790ff1cc9a7e17c5d0aea4ebe7fd8a71, introduced undefined behavior
by casting a base class (internal::{Naggy,Nice,Strict}Base<MockClass>,
using the curiously recurring template pattern) pointer to a derived
class ({Naggy,Nice,Strict}Mock<MockClass>), in the base class'
constructor. At that point, the object isn't guaranteed to have taken on
the shape of the derived class, and casting is undefined behavior.
The undefined behavior was caught by Chrome's CFI build bot [1], and
prevents rolling googletest past that commit / CL.
This commit simplifies the {Naggy,Nice,Strict}Mock class hierarchy in
a way that removes the undefined behavior.
[1] https://www.chromium.org/developers/testing/control-flow-integrity
Commit fe402c27790ff1cc9a7e17c5d0aea4ebe7fd8a71 published the changes in
internal CL 156157936, but missed the diff in
gmock-generated-nice-strict.h.pump. This makes it difficult to reason
about the change, because the .pump file is more concise than the
generated file.
This PR was tested by re-generating the .h file using the command below
and checking the git diff.
./googletest/scripts/pump.py \
googlemock/include/gmock/gmock-generated-nice-strict.h.pump