File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -44,7 +44,7 @@ void CheckVaarg::va_start_argument()
4444 const Variable* var = param2->variable ();
4545 if (var && var->isReference ())
4646 referenceAs_va_start_error (param2, var->name ());
47- if (var->index () + 2 < function->argCount () && _settings->isEnabled (" warning" )) {
47+ if (var && var ->index () + 2 < function->argCount () && _settings->isEnabled (" warning" )) {
4848 std::list<Variable>::const_reverse_iterator it = function->argumentList .rbegin ();
4949 ++it;
5050 wrongParameterTo_va_start_error (tok, var->name (), it->name ());
Original file line number Diff line number Diff line change @@ -74,6 +74,15 @@ class TestVaarg : public TestFixture {
7474 " va_end(arg_ptr);\n "
7575 " }" );
7676 ASSERT_EQUALS (" " , errout.str ());
77+
78+ check (" int main(int argc, char *argv[]) {\n "
79+ " long(^addthem)(const char *, ...) = ^long(const char *format, ...) {\n "
80+ " va_list argp;\n "
81+ " va_start(argp, format);\n "
82+ " c = va_arg(argp, int);\n "
83+ " };\n "
84+ " }" ); // Don't crash (#6032)
85+ ASSERT_EQUALS (" [test.cpp:6]: (error) va_list 'argp' was opened but not closed by va_end().\n " , errout.str ());
7786 }
7887
7988 void referenceAs_va_start () {
You can’t perform that action at this time.
0 commit comments