diff options
2 files changed, 18 insertions, 2 deletions
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SourceManipulation.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SourceManipulation.java index d0c288723fc..389bb1f97f0 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SourceManipulation.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/SourceManipulation.java @@ -245,13 +245,16 @@ public class SourceManipulation extends Parent implements ISourceManipulation, I final String elementName; if (token.charAt(0) != CEM_ELEMENTTYPE) { elementName= token; + if (!memento.hasMoreTokens()) return null; token= memento.nextToken(); } else { // anonymous elementName= ""; //$NON-NLS-1$ } // element type - assert token.charAt(0) == CEM_ELEMENTTYPE; + if (token.charAt(0) != CEM_ELEMENTTYPE || !memento.hasMoreTokens()) { + return null; + } String typeString= memento.nextToken(); int elementType; try { @@ -270,6 +273,11 @@ public class SourceManipulation extends Parent implements ISourceManipulation, I if (token.charAt(0) != CEM_PARAMETER) { break; } + if (!memento.hasMoreTokens()) { + params.add(""); //$NON-NLS-1$ + token= null; + break; + } params.add(memento.nextToken()); token= null; } while (memento.hasMoreTokens()); diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java index 4cc093cd25e..f3b588da3e1 100644 --- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java +++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java @@ -1016,13 +1016,16 @@ public class TranslationUnit extends Openable implements ITranslationUnit { final String elementName; if (token.charAt(0) != CEM_ELEMENTTYPE) { elementName= token; + if (!memento.hasMoreTokens()) return null; token= memento.nextToken(); } else { // anonymous elementName= ""; //$NON-NLS-1$ } // element type - assert token.charAt(0) == CEM_ELEMENTTYPE; + if (token.charAt(0) != CEM_ELEMENTTYPE || !memento.hasMoreTokens()) { + return null; + } String typeString= memento.nextToken(); int elementType; try { @@ -1041,6 +1044,11 @@ public class TranslationUnit extends Openable implements ITranslationUnit { if (token.charAt(0) != CEM_PARAMETER) { break; } + if (!memento.hasMoreTokens()) { + params.add(""); //$NON-NLS-1$ + token= null; + break; + } params.add(memento.nextToken()); token= null; } while (memento.hasMoreTokens()); |