diff options
author | Evan Martin <martine@danga.com> | 2012-08-10 20:39:25 (GMT) |
---|---|---|
committer | Evan Martin <martine@danga.com> | 2012-08-10 20:44:43 (GMT) |
commit | 09775f02209a07a4e1032b9ab9d8ce5f0ff8d583 (patch) | |
tree | 2955ace975992b8468596feb05425be12e6ba26a | |
parent | d58a10965610eb6b338e411ce816b810d76ab59e (diff) | |
download | Ninja-09775f02209a07a4e1032b9ab9d8ce5f0ff8d583.zip Ninja-09775f02209a07a4e1032b9ab9d8ce5f0ff8d583.tar.gz Ninja-09775f02209a07a4e1032b9ab9d8ce5f0ff8d583.tar.bz2 |
windows: fix integer truncation issues for helper binaries
Disable the size_t truncation warning. (Note that this leaves on
the other truncation-related warnings, like int->char.)
-rwxr-xr-x | configure.py | 3 | ||||
-rw-r--r-- | src/canon_perftest.cc | 2 | ||||
-rw-r--r-- | src/hash_collision_bench.cc | 9 | ||||
-rw-r--r-- | src/util_test.cc | 6 |
4 files changed, 14 insertions, 6 deletions
diff --git a/configure.py b/configure.py index 95f88b1..76abc72 100755 --- a/configure.py +++ b/configure.py @@ -110,6 +110,9 @@ else: if platform == 'windows': cflags = ['/nologo', '/Zi', '/W4', '/WX', '/wd4530', '/wd4100', '/wd4706', '/wd4512', '/wd4800', '/wd4702', '/wd4819', '/GR-', + # Disable size_t -> int truncation warning. + # We never have strings or arrays larger than 2**31. + '/wd4267', '/DNOMINMAX', '/D_CRT_SECURE_NO_WARNINGS', '/DNINJA_PYTHON="%s"' % options.with_python] ldflags = ['/DEBUG', '/libpath:$builddir'] diff --git a/src/canon_perftest.cc b/src/canon_perftest.cc index d0ed397..59bd18f 100644 --- a/src/canon_perftest.cc +++ b/src/canon_perftest.cc @@ -27,7 +27,7 @@ int main() { string err; char buf[200]; - int len = strlen(kPath); + size_t len = strlen(kPath); strcpy(buf, kPath); for (int j = 0; j < 5; ++j) { diff --git a/src/hash_collision_bench.cc b/src/hash_collision_bench.cc index 6736109..d0eabde 100644 --- a/src/hash_collision_bench.cc +++ b/src/hash_collision_bench.cc @@ -14,6 +14,11 @@ #include "build_log.h" +#include <algorithm> +using namespace std; + +#include <time.h> + int random(int low, int high) { return int(low + (rand() / double(RAND_MAX)) * (high - low) + 0.5); } @@ -22,7 +27,7 @@ void RandomCommand(char** s) { int len = random(5, 100); *s = new char[len]; for (int i = 0; i < len; ++i) - (*s)[i] = random(32, 127); + (*s)[i] = (char)random(32, 127); } int main() { @@ -32,7 +37,7 @@ int main() { char** commands = new char*[N]; pair<uint64_t, int>* hashes = new pair<uint64_t, int>[N]; - srand(time(NULL)); + srand((int)time(NULL)); for (int i = 0; i < N; ++i) { RandomCommand(&commands[i]); diff --git a/src/util_test.cc b/src/util_test.cc index 5ace5e7..7a34671 100644 --- a/src/util_test.cc +++ b/src/util_test.cc @@ -105,18 +105,18 @@ TEST(CanonicalizePath, AbsolutePath) { TEST(CanonicalizePath, NotNullTerminated) { string path; string err; - int len; + size_t len; path = "foo/. bar/."; len = strlen("foo/."); // Canonicalize only the part before the space. EXPECT_TRUE(CanonicalizePath(&path[0], &len, &err)); - EXPECT_EQ(strlen("foo"), static_cast<size_t>(len)); + EXPECT_EQ(strlen("foo"), len); EXPECT_EQ("foo/. bar/.", string(path)); path = "foo/../file bar/."; len = strlen("foo/../file"); EXPECT_TRUE(CanonicalizePath(&path[0], &len, &err)); - EXPECT_EQ(strlen("file"), static_cast<size_t>(len)); + EXPECT_EQ(strlen("file"), len); EXPECT_EQ("file ./file bar/.", string(path)); } |