exbin / bined-intellij-plugin

Hex viewer/editor plugin for JetBrains IntelliJ platform
https://bined.exbin.org/intellij-plugin
Apache License 2.0
59 stars 9 forks source link

Exceptions after opening file and making an initial edit #52

Closed rleigh-codelibre closed 9 months ago

rleigh-codelibre commented 1 year ago

Exceptions encountered when opening a new file which had been copied and pasted in the "Project" panel. The file had opened with BinEd, with an editor window being displayed:

image

Other BinEd editor windows continue to work properly following the errors:

image

CLion stack traces:

java.lang.IllegalStateException: Broken virtual file:C:/Users/rleigh/code/lua-cmake/tests/main/main_bom_good_3.luab
    at org.exbin.bined.intellij.BinEdFileDataWrapper.createBrokenVirtualFileException(BinEdFileDataWrapper.java:563)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.loadPage(BinEdFileDataWrapper.java:533)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.copyTo(BinEdFileDataWrapper.java:151)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.copyToArray(BinEdFileDataWrapper.java:137)
    at org.exbin.framework.bined.gui.ValuesPanel.updateValues(ValuesPanel.java:808)
    at org.exbin.framework.bined.gui.ValuesPanel.lambda$enableUpdate$0(ValuesPanel.java:747)
    at java.base/java.util.ArrayList.forEach(ArrayList.java:1511)
    at org.exbin.bined.swing.CodeAreaCore.notifyDataChanged(CodeAreaCore.java:189)
    at org.exbin.bined.swing.extended.ExtCodeArea.notifyDataChanged(ExtCodeArea.java:538)
    at org.exbin.bined.operation.swing.CodeAreaOperationCommandHandler.pressedCharAsCode(CodeAreaOperationCommandHandler.java:400)
    at org.exbin.bined.operation.swing.CodeAreaOperationCommandHandler.keyTyped(CodeAreaOperationCommandHandler.java:309)
    at org.exbin.bined.swing.CodeAreaCore$2.keyTyped(CodeAreaCore.java:85)
    at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
    at java.desktop/java.awt.Component.processKeyEvent(Component.java:6611)
    at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2892)
    at java.desktop/java.awt.Component.processEvent(Component.java:6433)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1953)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:886)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1166)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1023)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:849)
    at com.intellij.ide.IdeKeyboardFocusManager.access$dispatchEvent$s1569605750(IdeKeyboardFocusManager.kt:18)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
    at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:25)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4903)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2804)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:790)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:763)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:761)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:760)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
    at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:602)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:569)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
java.lang.IllegalStateException: Broken virtual file:C:/Users/rleigh/code/lua-cmake/tests/main/main_bom_good_3.luab
    at org.exbin.bined.intellij.BinEdFileDataWrapper.createBrokenVirtualFileException(BinEdFileDataWrapper.java:563)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.loadPage(BinEdFileDataWrapper.java:533)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.copyTo(BinEdFileDataWrapper.java:151)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.copyToArray(BinEdFileDataWrapper.java:137)
    at org.exbin.bined.swing.extended.ExtendedCodeAreaPainter.prepareRowData(ExtendedCodeAreaPainter.java:963)
    at org.exbin.bined.swing.extended.ExtendedCodeAreaPainter.paintRows(ExtendedCodeAreaPainter.java:931)
    at org.exbin.bined.swing.extended.ExtendedCodeAreaPainter.paintMainArea(ExtendedCodeAreaPainter.java:776)
    at org.exbin.bined.highlight.swing.extended.ExtendedHighlightCodeAreaPainter.paintMainArea(ExtendedHighlightCodeAreaPainter.java:61)
    at org.exbin.bined.swing.extended.ExtendedCodeAreaPainter.paintComponent(ExtendedCodeAreaPainter.java:453)
    at org.exbin.bined.swing.extended.ExtCodeArea.paintComponent(ExtCodeArea.java:182)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1115)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at com.intellij.openapi.fileEditor.impl.EditorTabs.paintChildren(EditorTabbedContainer.kt:575)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1124)
    at java.desktop/javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
    at java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:955)
    at java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5319)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBufferedFPScales(RepaintManager.java:1732)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1641)
    at java.desktop/javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1580)
    at java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1347)
    at java.desktop/javax.swing.JComponent.paint(JComponent.java:1101)
    at java.desktop/java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
    at java.desktop/sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:75)
    at java.desktop/sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:112)
    at java.desktop/java.awt.Container.paint(Container.java:2005)
    at java.desktop/java.awt.Window.paint(Window.java:3983)
    at com.intellij.openapi.wm.impl.IdeFrameImpl.paint(IdeFrameImpl.kt:89)
    at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:893)
    at java.desktop/javax.swing.RepaintManager$4.run(RepaintManager.java:865)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:865)
    at java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:838)
    at java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:787)
    at java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1909)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:788)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:758)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
    at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$7(IdeEventQueue.kt:571)
    at com.intellij.openapi.application.impl.ApplicationImpl.withoutImplicitRead(ApplicationImpl.java:1446)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:571)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:380)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
java.lang.IllegalStateException: Broken virtual file:C:/Users/rleigh/code/lua-cmake/tests/main/main_bom_good_3.luab
    at org.exbin.bined.intellij.BinEdFileDataWrapper.createBrokenVirtualFileException(BinEdFileDataWrapper.java:563)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.loadPage(BinEdFileDataWrapper.java:533)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.copyTo(BinEdFileDataWrapper.java:124)
    at org.exbin.bined.intellij.BinEdFileDataWrapper.copy(BinEdFileDataWrapper.java:108)
    at org.exbin.bined.operation.swing.DeleteCodeEditDataOperation.appendEdit(DeleteCodeEditDataOperation.java:75)
    at org.exbin.bined.operation.swing.command.EditCodeDataCommand.appendEdit(EditCodeDataCommand.java:129)
    at org.exbin.bined.operation.swing.CodeAreaOperationCommandHandler.deleteAction(CodeAreaOperationCommandHandler.java:537)
    at org.exbin.bined.operation.swing.CodeAreaOperationCommandHandler.backSpacePressed(CodeAreaOperationCommandHandler.java:499)
    at org.exbin.bined.operation.swing.CodeAreaOperationCommandHandler.keyPressed(CodeAreaOperationCommandHandler.java:269)
    at org.exbin.bined.swing.CodeAreaCore$2.keyPressed(CodeAreaCore.java:90)
    at java.desktop/java.awt.AWTEventMulticaster.keyPressed(AWTEventMulticaster.java:257)
    at java.desktop/java.awt.Component.processKeyEvent(Component.java:6614)
    at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2892)
    at java.desktop/java.awt.Component.processEvent(Component.java:6433)
    at java.desktop/java.awt.Container.processEvent(Container.java:2266)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5026)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1953)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:886)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1166)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1023)
    at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:849)
    at com.intellij.ide.IdeKeyboardFocusManager.access$dispatchEvent$s1569605750(IdeKeyboardFocusManager.kt:18)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25)
    at com.intellij.ide.IdeKeyboardFocusManager$dispatchEvent$1.invoke(IdeKeyboardFocusManager.kt:25)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:105)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
    at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:25)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4903)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2804)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4854)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:790)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:739)
    at java.desktop/java.awt.EventQueue$3.run(EventQueue.java:731)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:97)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:763)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:761)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:760)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:667)
    at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:602)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:569)
    at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:68)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:349)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:348)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:787)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:348)
    at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:343)
    at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:995)
    at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:113)
    at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:995)
    at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$4(IdeEventQueue.kt:343)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:385)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
rleigh-codelibre commented 1 year ago

I don't know if this context is useful or not, but I have three binary files, main_bom_good_1.luab, main_bom_good_2.luab, main_bom_good_3.luab. The first two will reopen just fine. The last will not open without triggering more exceptions.

Overwriting main_bom_good_3.luab with main_bom_good_1.luab allowed BinEd to then open the file. The only content difference was main_bom_good_1.luab was \xEB\xBB\xBF while main_bom_good_3.luab was \xEB\xBB\xB0. More likely the overwrite changed some state within CLion which was triggering the failure?

rleigh-codelibre commented 1 year ago

I think I've found the trigger. It looks like an editor bug.

If I go to the first byte EB and overwrite with EF then the editor locks up. The first E is OK, but as soon as I type the second character F the editor locks up. Writing EE works. Maybe a range validation bug?

Addition: The EB to EF change was actually made (and saved) when I restarted the IDE and checked the file content with another Hex editor (HxD), but that single-byte edit locked up the editor, preventing further edits, and the change was not reflected in the UI which continued to display EB after the lockup.

hajdam commented 1 year ago

Hi, thanks for the report. I was able to reproduce error by last steps you described (overwriting EF).

My guess is that there is UTF BOM processing in IntelliJ at play here when using IntelliJ native file handling. I'll try to investigate more, but it might be the case where I won't be able to fix this. https://en.wikipedia.org/wiki/Byte_order_mark

In the meantime / as a workaround it should be possible to use "Open in/Binary Editor" from context popup menu, which access file directly (but requires manual saving and cannot handle when file is changed by different activity at the same time).

rleigh-codelibre commented 1 year ago

Interesting, glad you could reproduce it. If it's not something which BinEd can work around, is this something worth raising with the IntelliJ devs on YouTrack?

I'll try your suggested workaround in the meantime. Thanks for responding so quickly!

hajdam commented 1 year ago

I don't think they would have time to work on that...

I was using VirtualFile.getInputStream method, but it skips BOM header even when not valid... https://github.com/JetBrains/intellij-community/blob/391cf0adcd528d9903b45b7c685cff90db820fcb/platform/core-api/src/com/intellij/openapi/vfs/VirtualFile.java#L711

Alternative is to rework wrapper to use VirtualFile.contentsToByteArray / VirtualFile.setBinaryContent, but that would mean to send content of the whole file when even single byte is modified. It will be probably noticeably slower especially for bigger files...

hajdam commented 1 year ago

Modified in current development build, if you want to try it: https://bined.exbin.org/download/?bined-intellij-plugin.zip

rleigh-codelibre commented 1 year ago

Hi, I tried out the development build. Testing the failure scenario detailed above, I can no longer cause any exceptions to be raised while editing, so this looks good to me. Thanks so much for looking at this on your weekend!

hajdam commented 9 months ago

Should be fixed in release 0.2.9.