diff --git a/plugins/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/compiler/PatternCompiler.java b/plugins/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/compiler/PatternCompiler.java index 1869f5f97ba4..8675b0a686b1 100644 --- a/plugins/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/compiler/PatternCompiler.java +++ b/plugins/structuralsearch/source/com/intellij/structuralsearch/impl/matcher/compiler/PatternCompiler.java @@ -325,7 +325,11 @@ public class PatternCompiler { @Override public String getPrefix(int varIndex) { - return myPrefixes[varIndex]; + try { + return myPrefixes[varIndex]; + } catch (ArrayIndexOutOfBoundsException e) { + return null; + } } } @@ -351,6 +355,9 @@ public class PatternCompiler { final String name = template.getSegmentName(i); final String prefix = prefixProvider.getPrefix(i); + if (prefix == null) { + throw new MalformedPatternException(); + } buf.append(text.substring(prevOffset,offset)); buf.append(prefix);