@@ -216,6 +216,53 @@ class TestVaarg : public TestFixture {
216216 " }\n "
217217 " }" );
218218 ASSERT_EQUALS (" " , errout.str ());
219+
220+ // #7533
221+ check (" void action_push(int type, ...) {\n "
222+ " va_list args;\n "
223+ " va_start(args, type);\n "
224+ " switch (push_mode) {\n "
225+ " case UNDO:\n "
226+ " list_add(&act->node, &to_redo);\n "
227+ " break;\n "
228+ " case REDO:\n "
229+ " list_add(&act->node, &to_undo);\n "
230+ " break;\n "
231+ " }\n "
232+ " va_end(args);\n "
233+ " }" );
234+ ASSERT_EQUALS (" " , errout.str ());
235+
236+ check (" void action_push(int type, ...) {\n "
237+ " va_list args;\n "
238+ " va_start(args, type);\n "
239+ " switch (push_mode) {\n "
240+ " case UNDO:\n "
241+ " list_add(&act->node, &to_redo);\n "
242+ " va_end(args);\n "
243+ " break;\n "
244+ " case REDO:\n "
245+ " list_add(&act->node, &to_undo);\n "
246+ " va_end(args);\n "
247+ " break;\n "
248+ " }\n "
249+ " }" );
250+ ASSERT_EQUALS (" " , errout.str ());
251+
252+ check (" void action_push(int type, ...) {\n "
253+ " va_list args;\n "
254+ " va_start(args, type);\n "
255+ " switch (push_mode) {\n "
256+ " case UNDO:\n "
257+ " list_add(&act->node, &to_redo);\n "
258+ " break;\n "
259+ " case REDO:\n "
260+ " list_add(&act->node, &to_undo);\n "
261+ " va_end(args);\n "
262+ " break;\n "
263+ " }\n "
264+ " }" );
265+ ASSERT_EQUALS (" [test.cpp:13]: (error) va_list 'args' was opened but not closed by va_end().\n " , errout.str ());
219266 }
220267
221268 void va_start_subsequentCalls () {
0 commit comments