22:22:27.702 INFO AWT-EventQueue-1 CharacterManager:379 Saving character Unnamed 3 - D:\pcgen\pcgen_dev\Trunk\pcgen\characters\characters\Unnamed 3.pcg
22:22:28.538 SEVERE AWT-EventQueue-1 PCGenFrame:963 Error saving character to new file D:\pcgen\pcgen_dev\Trunk\pcgen\characters\characters\Unnamed 3.pcg
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.substring(Unknown Source)
at pcgen.util.FileHelper.findRelativePath(FileHelper.java:89)
at pcgen.io.PCGVer2Creator.appendFollowerLines(PCGVer2Creator.java:1488)
at pcgen.io.PCGVer2Creator.createPCGString(PCGVer2Creator.java:441)
at pcgen.io.PCGIOHandler.write(PCGIOHandler.java:328)
at pcgen.io.IOHandler.write(IOHandler.java:176)
at pcgen.gui2.facade.CharacterFacadeImpl.save(CharacterFacadeImpl.java:2800)
at pcgen.system.CharacterManager.saveCharacter(CharacterManager.java:388)
at pcgen.gui2.PCGenFrame.showSaveCharacterChooser(PCGenFrame.java:955)
at pcgen.gui2.PCGenFrame.saveCharacter(PCGenFrame.java:657)
at pcgen.gui2.PCGenActionMap$SaveAction.actionPerformed(PCGenActionMap.java:607)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$400(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.awt.EventQueue$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at pcgen.gui.PCGen_Frame1$WaitCursorEventQueue.dispatchEvent(PCGen_Frame1.java:2934)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Added a check before this part of the code to fall back to the absolute file name rather than fail. I'd be interested in seeing any warnings generated.