summaryrefslogtreecommitdiffstats
path: root/src/parser.cc
diff options
context:
space:
mode:
authorBruce Dawson <randomascii@users.noreply.github.com>2022-06-16 07:47:21 (GMT)
committerGitHub <noreply@github.com>2022-06-16 07:47:21 (GMT)
commita4c24a33c1ed32d9d51c8df763ec6ad574587d02 (patch)
tree1568dbd06c9a927018e23191581f57c771aff1aa /src/parser.cc
parent1d4034f0ac2b5cfb809b5ab983d47c3cb2c78415 (diff)
downloadNinja-a4c24a33c1ed32d9d51c8df763ec6ad574587d02.zip
Ninja-a4c24a33c1ed32d9d51c8df763ec6ad574587d02.tar.gz
Ninja-a4c24a33c1ed32d9d51c8df763ec6ad574587d02.tar.bz2
Build ninja with C++11 (#2089)
* Build ninja with C++11 In order to allow future use of std::chrono to make the stats code portable it is desirable to compile with C++11. Doing so also allows use of std::unordered_map, and reduces the number of #ifdefs in the ninja source code. Switching to C++11 requires modifying both CMakeLists.txt and configure.py, for MSVC and for other build systems. For MSVC the required change is adding /Zc:__cplusplus to tell the compiler to give a more accurate value for the __cplusplus macro. For other platforms the change is to add -std=c++11 or the CMake equivalent. This change makes some progress towards resolving issue #2004. * Delete code and instructions C++11 guarantees that string::data() gives null-terminated pointers, so explicitly adding a null terminator is no longer needed. The Google C++ Style Guide already recommends avoiding unnecessary use of C++14 and C++17 so repeating this in CONTRIBUTING.md is not critical. These changes both came from PR-review suggestions. * Only set cxx_std_11 if standard is 98 * Return to unconditional target_compile_features use After much discussion it sounds like using target_compile_features unconditionally is best.
Diffstat (limited to 'src/parser.cc')
-rw-r--r--src/parser.cc7
1 files changed, 0 insertions, 7 deletions
diff --git a/src/parser.cc b/src/parser.cc
index 756922d..5f303c5 100644
--- a/src/parser.cc
+++ b/src/parser.cc
@@ -31,13 +31,6 @@ bool Parser::Load(const string& filename, string* err, Lexer* parent) {
return false;
}
- // The lexer needs a nul byte at the end of its input, to know when it's done.
- // It takes a StringPiece, and StringPiece's string constructor uses
- // string::data(). data()'s return value isn't guaranteed to be
- // null-terminated (although in practice - libc++, libstdc++, msvc's stl --
- // it is, and C++11 demands that too), so add an explicit nul byte.
- contents.resize(contents.size() + 1);
-
return Parse(filename, contents, err);
}