JPEXS Free Flash Decompiler Issue Tracker

If you are looking for the decompiler itself, visit https://github.com/jindrapetrik/jpexs-decompiler

NEW : We have got a new blog where we post some interesting SWF internals info.

List of issuesList of issues

#2483 Cannot save DefineShape4 with more than 2 gradient records
Author:
Date created:
Type: bug
Visibility: Everybody
Assigned to:
State: new Help

> What steps will reproduce the problem? > What is the expected output? What do you see instead? > What version of the product are you using? Is it "nightly build"? Which operating system do you have? > Please provide any additional information below. If the problem is related to a SWF file, attach it here, otherwise we can't help you.
Downloadtest.swf (141 B)
Hi, sorry, I messed up creating the issue! > What steps will reproduce the problem? 1. Open the attached test.swf file 2. Go to DefineShape4 3. Edit it 4. Go to fillStyle[0] 5. Add a new gradient record 6. Try saving it > What is the expected output? What do you see instead? It should be saved, but nothing happens. I can see an error in logs 08/07/2025 20:06:46 SEVERE Uncaught exception in thread: AWT-EventQueue-0 java.lang.ClassCastException > What version of the product are you using? Is it "nightly build"? Which operating system do you have? 22.0.2, Flatpak version
The bug is reproducible in 24.0.1 too: 08/07/2025 20:21:25 SEVERE Uncaught exception in thread: AWT-EventQueue-0 java.lang.ClassCastException: com.jpexs.decompiler.flash.types.RGB cannot be cast to com.jpexs.decompiler.flash.types.RGBA at com.jpexs.decompiler.flash.SWFOutputStream.writeGRADRECORD(SWFOutputStream.java:1408) at com.jpexs.decompiler.flash.SWFOutputStream.writeGRADIENT(SWFOutputStream.java:1394) at com.jpexs.decompiler.flash.SWFOutputStream.writeFILLSTYLE(SWFOutputStream.java:1327) at com.jpexs.decompiler.flash.SWFOutputStream.writeFILLSTYLEARRAY(SWFOutputStream.java:1361) at com.jpexs.decompiler.flash.SWFOutputStream.writeSHAPEWITHSTYLE(SWFOutputStream.java:1549) at com.jpexs.decompiler.flash.tags.DefineShape4Tag.getData(DefineShape4Tag.java:109) at com.jpexs.decompiler.flash.tags.Tag.getData(Tag.java:663) at com.jpexs.decompiler.flash.tags.Tag.cloneTag(Tag.java:585) at com.jpexs.decompiler.flash.gui.GenericTagTreePanel.setEditMode(GenericTagTreePanel.java:12 76) at com.jpexs.decompiler.flash.gui.PreviewPanel.saveDisplayEditTag(PreviewPanel.java:2653) at com.jpexs.decompiler.flash.gui.PreviewPanel.saveDisplayEditTagButtonActionPerformed(Previe wPanel.java:2705) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:262) at org.pushingpixels.substance.internal.utils.RolloverButtonListener.mouseReleased(RolloverBu ttonListener.java:124) at java.awt.Component.processMouseEvent(Component.java:6539) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6304) at java.awt.Container.processEvent(Container.java:2239) at java.awt.Component.dispatchEventImpl(Component.java:4889) at java.awt.Container.dispatchEventImpl(Container.java:2297) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476) at java.awt.Container.dispatchEventImpl(Container.java:2283) at java.awt.Window.dispatchEventImpl(Window.java:2746) at java.awt.Component.dispatchEvent(Component.java:4711) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760) 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(ProtectionDo main.java:74) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDo main.java:84) at java.awt.EventQueue$4.run(EventQueue.java:733) at java.awt.EventQueue$4.run(EventQueue.java:731) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDo main.java:74) at java.awt.EventQueue.dispatchEvent(EventQueue.java:730) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205) 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)