diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/LegacyCompletionProposalComputer.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/LegacyCompletionProposalComputer.java
index 0d199f7c7a6..008d608e62b 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/LegacyCompletionProposalComputer.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/LegacyCompletionProposalComputer.java
@@ -7,6 +7,7 @@
  *
  * Contributors:
  *     Anton Leherbauer (Wind River Systems) - initial API and implementation
+ *     Bryan Wilkinson (QNX)
  *******************************************************************************/
 
 package org.eclipse.cdt.internal.ui.text.contentassist;
@@ -137,13 +138,17 @@ public class LegacyCompletionProposalComputer implements ICompletionProposalComp
 			int paren= scanner.findOpeningPeer(pos, bound, '(', ')');
 			if (paren == CHeuristicScanner.NOT_FOUND)
 				break;
-			int token= scanner.previousToken(paren - 1, bound);
+			paren= scanner.findNonWhitespaceBackward(paren - 1, bound);
+			if (paren == CHeuristicScanner.NOT_FOUND) {
+				break;
+			}
+			int token= scanner.previousToken(paren, bound);
 			// next token must be a method name (identifier) or the closing angle of a
 			// constructor call of a template type.
 			if (token == Symbols.TokenIDENT || token == Symbols.TokenGREATERTHAN) {
-				return paren - 1;
+				return paren + 1;
 			}
-			pos= paren - 1;
+			pos= paren;
 		} while (true);
 		
 		return context.getInvocationOffset();