3.6 - Folders: Crash Report

Build: VASSAL-3.6.0-SNAPSHOT-e8943f8 (on MacOS)

Vassal Eeeked in response to using “Duplicate this Folder” in Prototype. The folder contained 3 Prototypes. Key extract here:
2021-04-19 13:13:32,557 [45016-AWT-EventQueue-0] ERROR VASSAL.build.Builder - Error building VASSAL.build.module.PrototypeDefinition
2021-04-19 13:13:32,562 [45016-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog -
java.lang.NullPointerException: Cannot invoke “VASSAL.build.module.PrototypesContainer.addDefinition(VASSAL.build.module.PrototypeDefinition)” because “protos” is null

Full report below.

2021-04-19 10:52:23,296 [45012-main] INFO VASSAL.launch.StartUp - Starting 2021-04-19 10:52:23,310 [45012-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.16 2021-04-19 10:52:23,310 [45012-main] INFO VASSAL.launch.StartUp - Java version 16 2021-04-19 10:52:23,310 [45012-main] INFO VASSAL.launch.StartUp - VASSAL version 3.6.0-SNAPSHOT-e8943f8 2021-04-19 10:52:23,633 [45012-AWT-EventQueue-0] INFO VASSAL.launch.ModuleManager - Manager 2021-04-19 10:52:49,772 [45012-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module file /Users/Mark/Dropbox/ccn v4-0a64.vmod 2021-04-19 10:52:49,940 [45012-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.TilingHandler - No images to tile. 2021-04-19 10:52:49,941 [45012-SwingWorker-pool-2-thread-1] INFO VASSAL.launch.AbstractLaunchAction - Loading module Commands & Colors: Napoleonics 2021-04-19 10:52:49,944 [45012-SwingWorker-pool-2-thread-1] INFO VASSAL.tools.io.ProcessLauncher - launching /Applications/VASSAL-3.6.0-SNAPSHOT-e8943f8-macos.app/Contents/MacOS/jre/bin/java -Xms512M -Xmx512M -Duser.home=/Users/Mark -Duser.dir=/Applications/VASSAL-3.6.0-SNAPSHOT-e8943f8-macos.app -cp Contents/Resources/Java/Vengine.jar -Xdock:name=Commands & Colors: Napoleonics -Xdock:icon=/Applications/VASSAL-3.6.0-SNAPSHOT-e8943f8-macos.app/Contents/Resources/VASSAL.icns VASSAL.launch.Editor --edit -- /Users/Mark/Dropbox/ccn v4-0a64.vmod 2021-04-19 10:52:50,336 [45016-main] INFO VASSAL.launch.StartUp - Starting 2021-04-19 10:52:50,344 [45016-main] INFO VASSAL.launch.StartUp - OS Mac OS X 10.16 2021-04-19 10:52:50,344 [45016-main] INFO VASSAL.launch.StartUp - Java version 16 2021-04-19 10:52:50,344 [45016-main] INFO VASSAL.launch.StartUp - VASSAL version 3.6.0-SNAPSHOT-e8943f8 2021-04-19 10:52:50,345 [45016-main] INFO VASSAL.launch.Launcher - Editor 2021-04-19 10:52:52,488 [45016-AWT-EventQueue-0] INFO VASSAL.script.ExpressionInterpreter - Attempting to load /VASSAL/script/init_expression.bsh URI generated=jar:file:/Applications/VASSAL-3.6.0-SNAPSHOT-e8943f8-macos.app/Contents/Resources/Java/Vengine.jar!/VASSAL/script/init_expression.bsh 2021-04-19 10:52:55,111 [45016-AWT-EventQueue-0] INFO VASSAL.build.GameModule - Commands & Colors: Napoleonics version 4.0a64 2021-04-19 10:53:32,767 [45016-AWT-EventQueue-0] INFO VASSAL.tools.io.ProcessLauncher - launching /Applications/VASSAL-3.6.0-SNAPSHOT-e8943f8-macos.app/Contents/MacOS/jre/bin/java -classpath Contents/Resources/Java/Vengine.jar -Duser.dir=/Applications/VASSAL-3.6.0-SNAPSHOT-e8943f8-macos.app VASSAL.launch.ModuleManager --update-module /Users/Mark/Dropbox/ccn v4-0a64-Vassal36.vmod 2021-04-19 13:13:32,557 [45016-AWT-EventQueue-0] ERROR VASSAL.build.Builder - Error building VASSAL.build.module.PrototypeDefinition 2021-04-19 13:13:32,562 [45016-AWT-EventQueue-0] ERROR VASSAL.tools.ErrorDialog - java.lang.NullPointerException: Cannot invoke "VASSAL.build.module.PrototypesContainer.addDefinition(VASSAL.build.module.PrototypeDefinition)" because "protos" is null at VASSAL.build.module.folder.PrototypeFolder.add(PrototypeFolder.java:37) at VASSAL.build.Builder.build(Builder.java:83) at VASSAL.build.AbstractBuildable.build(AbstractBuildable.java:104) at VASSAL.configure.ConfigureTree$8.actionPerformed(ConfigureTree.java:816) at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1972) at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2313) at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405) at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262) at java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:374) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1022) at java.desktop/com.apple.laf.AquaMenuItemUI.doClick(AquaMenuItemUI.java:157) at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1066) at java.desktop/java.awt.Component.processMouseEvent(Component.java:6617) at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342) at java.desktop/java.awt.Component.processEvent(Component.java:6382) at java.desktop/java.awt.Container.processEvent(Container.java:2264) at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4993) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2322) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825) at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4934) at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4563) at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4504) at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2308) at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2773) at java.desktop/java.awt.Component.dispatchEvent(Component.java:4825) at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721) at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745) at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743) at java.base/java.security.AccessController.doPrivileged(AccessController.java:391) at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85) at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742) at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203) at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124) at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109) at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

Thanks! The “FolderInsertUpdate” build contains a fix you can try. (Oh that build also changes “Insert” to “Insert-before”, just so you’re aware)

Tested doing similar operations as before and both aspects work for me with that build.