diff --git a/lib/checkvaarg.cpp b/lib/checkvaarg.cpp index d02e24738..8e25fca71 100644 --- a/lib/checkvaarg.cpp +++ b/lib/checkvaarg.cpp @@ -104,7 +104,6 @@ void CheckVaarg::va_list_usage() if (tok->linkAt(1)->previous()->varId() == var->declarationId()) { // Source if (!open) va_list_usedBeforeStartedError(tok, var->name()); - nopen = false; } if (tok->tokAt(2)->varId() == var->declarationId()) { // Destination if (open) diff --git a/test/testvaarg.cpp b/test/testvaarg.cpp index 446aa0761..8e7c6f11f 100644 --- a/test/testvaarg.cpp +++ b/test/testvaarg.cpp @@ -167,6 +167,15 @@ private: " va_end(arg_ptr);\n" "}"); ASSERT_EQUALS("", errout.str()); + + // #6066 + check("void Format(va_list v1) {\n" + " va_list v2;\n" + " va_copy(v2, v1);\n" + " foo(va_arg(v1, float));\n" + " va_end(v2);\n" + "}"); + ASSERT_EQUALS("", errout.str()); } void va_start_subsequentCalls() {