diff options
author | Nico Weber <thakis@chromium.org> | 2013-05-24 01:20:22 (GMT) |
---|---|---|
committer | Nico Weber <thakis@chromium.org> | 2013-05-24 01:20:22 (GMT) |
commit | 3c8b7515f41f5b636a437a808a77fcad959b6831 (patch) | |
tree | 61adc066f9d47ea9031aadb6ab301be38c6fa738 /src/util.cc | |
parent | 31ef1415f208e04000424e6fc446fe4377bc7ed3 (diff) | |
download | Ninja-3c8b7515f41f5b636a437a808a77fcad959b6831.zip Ninja-3c8b7515f41f5b636a437a808a77fcad959b6831.tar.gz Ninja-3c8b7515f41f5b636a437a808a77fcad959b6831.tar.bz2 |
Don't use va_start() with reference parameters, it's undefined behavior.
Should fix issue #584.
Diffstat (limited to 'src/util.cc')
-rw-r--r-- | src/util.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/util.cc b/src/util.cc index fa72dd2..b9c2c0d 100644 --- a/src/util.cc +++ b/src/util.cc @@ -234,13 +234,16 @@ const char* SpellcheckStringV(const string& text, return result; } -const char* SpellcheckString(const string& text, ...) { +const char* SpellcheckString(const char* text, ...) { + // Note: This takes a const char* instead of a string& because using + // va_start() with a reference parameter is undefined behavior. va_list ap; va_start(ap, text); vector<const char*> words; const char* word; while ((word = va_arg(ap, const char*))) words.push_back(word); + va_end(ap); return SpellcheckStringV(text, words); } |