summaryrefslogtreecommitdiffstats
path: root/src/util.cc
diff options
context:
space:
mode:
authorNico Weber <thakis@chromium.org>2013-05-24 01:20:22 (GMT)
committerNico Weber <thakis@chromium.org>2013-05-24 01:20:22 (GMT)
commit3c8b7515f41f5b636a437a808a77fcad959b6831 (patch)
tree61adc066f9d47ea9031aadb6ab301be38c6fa738 /src/util.cc
parent31ef1415f208e04000424e6fc446fe4377bc7ed3 (diff)
downloadNinja-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.cc5
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);
}