Fix comparison between signed and unsigned error on darwin

mode_t is a uint16_t on darwin, which causes
sb.st_mode & ~S_IFMT
to produce an int when the uint16_t is promoted for the operator.
Cast to unsigned int before comparing against 0660U.

Change-Id: Ib1439c08d9e2b297eeeba701891508d269c19a3d
(cherry-pick from commit 56b37345d9)
This commit is contained in:
Colin Cross 2015-04-30 15:12:21 -07:00 committed by Ying Wang
parent dca1bb5e79
commit 20bbd4f449

View file

@ -60,7 +60,7 @@ TEST(file, WriteStringToFile2) {
<< errno;
struct stat sb;
ASSERT_EQ(0, stat(tf.filename, &sb));
ASSERT_EQ(0660U, (sb.st_mode & ~S_IFMT));
ASSERT_EQ(0660U, static_cast<unsigned int>(sb.st_mode & ~S_IFMT));
ASSERT_EQ(getuid(), sb.st_uid);
ASSERT_EQ(getgid(), sb.st_gid);
std::string s;