OSDN Git Service

C++: Fix arg. count for functions with function-try-blocks
authorLeandro Melo <leandro.melo@nokia.com>
Fri, 21 Oct 2011 10:40:01 +0000 (12:40 +0200)
committerLeandro T. C. Melo <leandro.melo@nokia.com>
Fri, 21 Oct 2011 11:25:58 +0000 (13:25 +0200)
Task-number: QTCREATORBUG-6343
Change-Id: I71575098c71611dc8514288f7938af4c409ebaa3
Reviewed-by: Christian Kamm <christian.d.kamm@nokia.com>
src/libs/3rdparty/cplusplus/Symbols.cpp

index 7cbacd9..b1b7fbc 100644 (file)
@@ -308,11 +308,12 @@ bool Function::hasReturnType() const
 
 unsigned Function::argumentCount() const
 {
-    const unsigned c = memberCount();
+    unsigned c = memberCount();
     if (c > 0 && memberAt(0)->type()->isVoidType())
         return 0;
-    if (c > 0 && memberAt(c - 1)->isBlock())
-        return c - 1;
+    // Definitions with function-try-blocks will have more than a block.
+    while (c > 0 && memberAt(c - 1)->isBlock())
+        --c;
     return c;
 }