File tree Expand file tree Collapse file tree 2 files changed +17
-1
lines changed
Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -122,7 +122,7 @@ void CheckVaarg::va_list_usage()
122122 }
123123 open = nopen;
124124 tok = tok->linkAt (1 );
125- } else if (Token::Match (tok, " throw|return" ))
125+ } else if (Token::Match (tok, " throw|return|break " ))
126126 exitOnEndOfStatement = true ;
127127 else if (_tokenizer->isCPP () && tok->str () == " try" ) {
128128 open = false ;
Original file line number Diff line number Diff line change @@ -200,6 +200,22 @@ class TestVaarg : public TestFixture {
200200 " va_end(v2);\n "
201201 " }" );
202202 ASSERT_EQUALS (" " , errout.str ());
203+
204+ // #7527
205+ check (" void foo(int flag1, int flag2, ...) {\n "
206+ " switch (flag1) {\n "
207+ " default:\n "
208+ " va_list vargs;\n "
209+ " va_start(vargs, flag2);\n "
210+ " if (flag2) {\n "
211+ " va_end(vargs);\n "
212+ " break;\n "
213+ " }\n "
214+ " int data = va_arg(vargs, int);\n "
215+ " va_end(vargs);\n "
216+ " }\n "
217+ " }" );
218+ ASSERT_EQUALS (" " , errout.str ());
203219 }
204220
205221 void va_start_subsequentCalls () {
You can’t perform that action at this time.
0 commit comments