diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/SurroundWithTemplateMenuAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/SurroundWithTemplateMenuAction.java index 96dc6624cb3..57d136d2069 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/SurroundWithTemplateMenuAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/SurroundWithTemplateMenuAction.java @@ -272,11 +272,15 @@ public class SurroundWithTemplateMenuAction implements IWorkbenchWindowPulldownD TemplateCompletionProposalComputer templateComputer = new TemplateCompletionProposalComputer(); CContentAssistInvocationContext context = new CContentAssistInvocationContext( editor.getViewer(), textSelection.getOffset(), editor, true, false ); - List proposals= templateComputer.computeCompletionProposals(context, null); - if (proposals == null || proposals.isEmpty()) - return null; - - return getActionsFromProposals(proposals, context.getInvocationOffset(), editor.getViewer()); + try { + List proposals= templateComputer.computeCompletionProposals(context, null); + if (proposals == null || proposals.isEmpty()) + return null; + + return getActionsFromProposals(proposals, context.getInvocationOffset(), editor.getViewer()); + } finally { + context.dispose(); + } } private static ITextSelection getTextSelection(CEditor editor) { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ParameterGuessingProposal.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ParameterGuessingProposal.java index 7e252eebf40..2107d9daff2 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ParameterGuessingProposal.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/ParameterGuessingProposal.java @@ -358,13 +358,19 @@ public class ParameterGuessingProposal extends FunctionCompletionProposal { } /** - * Returns a list of functions and variables that are defined in current context. + * Returns a list of functions and variables that are defined in the current context. * @return a list of assignable elements. */ private List getAssignableElements() { int i = getStatementStartOffset(fContext.getDocument(), getStatementStartOffset()); - CContentAssistInvocationContext c = new CContentAssistInvocationContext(fTextViewer, i, getCEditor(), true, false); - IASTCompletionNode node = c.getCompletionNode(); + CContentAssistInvocationContext context = + new CContentAssistInvocationContext(fTextViewer, i, getCEditor(), true, false); + IASTCompletionNode node; + try { + node = context.getCompletionNode(); + } finally { + context.dispose(); + } IASTName[] names = node.getNames(); List allBindings = new ArrayList<>(); for (IASTName name : names) {