JetBrains / idea-gitignore

.ignore support plugin for IntelliJ IDEA
Apache License 2.0
1.29k stars 177 forks source link

Plugin causes "IDE Fatal Error" in RubyMine 2016.1 beta #208

Closed s2k closed 8 years ago

s2k commented 8 years ago

Steps to Reproduce

  1. Use the gitignore plugin with RubyMine (2016.1 beta)
  2. Open RubyMine with a number of projects (so initial indexing takes some time)
  3. Click on the indexing info on the bottom of the IDE window (that usually opens a small dialog showing some details about the ongoing activities)
  4. Apparently some "IDE Fatal Error" happens and the corresponding dialog can be displayed (See screenshot)

Stacktace in dialog window:

String index out of range: 2
java.lang.StringIndexOutOfBoundsException: String index out of range: 2
    at java.lang.String.charAt(String.java:658)
    at java.lang.Character.codePointAt(Character.java:4866)
    at java.util.regex.Pattern$CharProperty.match(Pattern.java:3775)
    at java.util.regex.Pattern$Curly.match1(Pattern.java:4293)
    at java.util.regex.Pattern$Curly.match(Pattern.java:4236)
    at java.util.regex.Pattern$Curly.match1(Pattern.java:4287)
    at java.util.regex.Pattern$Curly.match(Pattern.java:4236)
    at java.util.regex.Pattern$Begin.match(Pattern.java:3525)
    at java.util.regex.Matcher.match(Matcher.java:1270)
    at java.util.regex.Matcher.matches(Matcher.java:604)
    at mobi.hsz.idea.gitignore.util.Utils.match(Utils.java:512)
    at mobi.hsz.idea.gitignore.util.CacheMap.isFileIgnored(CacheMap.java:200)
    at mobi.hsz.idea.gitignore.IgnoreManager.isFileIgnored(IgnoreManager.java:263)
    at mobi.hsz.idea.gitignore.vcs.IgnoreFileStatusProvider.getFileStatus(IgnoreFileStatusProvider.java:68)
    at com.intellij.openapi.vcs.impl.FileStatusManagerImpl.calcStatus(FileStatusManagerImpl.java:144)
    at com.intellij.openapi.vcs.impl.FileStatusManagerImpl.getStatus(FileStatusManagerImpl.java:279)
    at com.intellij.ide.projectView.impl.nodes.AbstractPsiBasedNode.getFileStatus(AbstractPsiBasedNode.java:121)
    at com.intellij.ide.util.treeView.AbstractTreeNode.setForcedForeground(AbstractTreeNode.java:81)
    at com.intellij.ide.util.treeView.AbstractTreeNode.postprocess(AbstractTreeNode.java:77)
    at com.intellij.ide.util.treeView.PresentableNodeDescriptor.getUpdatedPresentation(PresentableNodeDescriptor.java:91)
    at com.intellij.ide.util.treeView.PresentableNodeDescriptor.update(PresentableNodeDescriptor.java:41)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder.updateNodeDescriptor(AbstractTreeBuilder.java:577)
    at com.intellij.ide.util.treeView.AbstractTreeUi$22.perform(AbstractTreeUi.java:937)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:34)
    at com.intellij.ide.util.treeView.AbstractTreeUi.execute(AbstractTreeUi.java:1838)
    at com.intellij.ide.util.treeView.AbstractTreeUi.update(AbstractTreeUi.java:933)
    at com.intellij.ide.util.treeView.AbstractTreeUi.update(AbstractTreeUi.java:885)
    at com.intellij.ide.util.treeView.AbstractTreeUi.processExistingNode(AbstractTreeUi.java:3019)
    at com.intellij.ide.util.treeView.AbstractTreeUi.access$5100(AbstractTreeUi.java:66)
    at com.intellij.ide.util.treeView.AbstractTreeUi$33$1.run(AbstractTreeUi.java:1722)
    at com.intellij.ide.util.treeView.AbstractTreeUi.execute(AbstractTreeUi.java:1817)
    at com.intellij.ide.util.treeView.AbstractTreeUi.access$5400(AbstractTreeUi.java:66)
    at com.intellij.ide.util.treeView.AbstractTreeUi$34.perform(AbstractTreeUi.java:1783)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:34)
    at com.intellij.ide.util.treeView.AbstractTreeUi.executeYieldingRequest(AbstractTreeUi.java:2092)
    at com.intellij.ide.util.treeView.AbstractTreeUi.access$6000(AbstractTreeUi.java:66)
    at com.intellij.ide.util.treeView.AbstractTreeUi$37$1.perform(AbstractTreeUi.java:1984)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:34)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder.runOnYeildingDone(AbstractTreeBuilder.java:433)
    at com.intellij.ide.util.treeView.AbstractTreeUi.runOnYieldingDone(AbstractTreeUi.java:2187)
    at com.intellij.ide.util.treeView.AbstractTreeUi$37.perform(AbstractTreeUi.java:1979)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:34)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder$1.process(AbstractTreeBuilder.java:53)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder$1.process(AbstractTreeBuilder.java:50)
    at com.intellij.util.containers.TransferToEDTQueue.processNext(TransferToEDTQueue.java:99)
    at com.intellij.util.containers.TransferToEDTQueue.access$300(TransferToEDTQueue.java:37)
    at com.intellij.util.containers.TransferToEDTQueue$1.run(TransferToEDTQueue.java:58)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at com.intellij.ide.IdeEventQueue.d(IdeEventQueue.java:857)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:658)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:386)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Context

screen shot 2016-03-23 at 09 21 44

hsz commented 8 years ago

@s2k Thank you for reporting. This has been fixed with #205

Anyway - can you provide me the ignore content that caused this error ?

s2k commented 8 years ago

I suspect this one, but actually I have to admit that I can't reproduce the behaviour anymore. 😮

$cat .gitignore
*.properties~
*.example
*.pyc
.DS_Store
something.iml
.gradle
.project
.idea
*.iws
*.ipr
*.log
.rakeTasks
something_other/doc/generated
!something_other/doc/generated/.keep
hsz commented 8 years ago

Ok, good to hear. Anyway - it should not appears anymore with the v1.3.1 release. Thanks @s2k !