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.

#2066 NullPointerException in ScriptInfo.getPacks when attempting to load api-versioned SWF
Author:
Aaron1011

Date created:
Type: feature
Visibility: Everybody
Assigned to:
Labels: Api versioningAS3Decompilation
State: closed 

> What steps will reproduce the problem?
Open the attached custom playerglobal.swf in FFdec.
> What is the expected output? What do you see instead?
I see the following stack trace in the console:
```
Aug 27, 2023 10:27:58 AM com.jpexs.decompiler.flash.gui.View execInEventDispatch
SEVERE: null
java.lang.reflect.InvocationTargetException
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1349)
at java.awt.EventQueue.invokeAndWait(EventQueue.java:1324)
at javax.swing.SwingUtilities.invokeAndWait(SwingUtilities.java:1353)
at com.jpexs.decompiler.flash.gui.View.execInEventDispatch(View.java:462)
at com.jpexs.decompiler.flash.gui.Main$OpenFileWorker.doInBackground(Main.java:1567)
at javax.swing.SwingWorker$1.call(SwingWorker.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at javax.swing.SwingWorker.run(SwingWorker.java:334)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
Caused by: java.lang.NullPointerException
at com.jpexs.decompiler.flash.abc.types.ScriptInfo.getPacks(ScriptInfo.java:101)
at com.jpexs.decompiler.flash.abc.ABC.getScriptPacks(ABC.java:1119)
at com.jpexs.decompiler.flash.SWF.getAS3Packs(SWF.java:2170)
at
com.jpexs.decompiler.flash.gui.abc.ClassesListTreeModel.<init>(ClassesListTreeModel.java:6
4)
at
com.jpexs.decompiler.flash.gui.tagtree.TagTreeModel.createTagList(TagTreeModel.java:291)
at com.jpexs.decompiler.flash.gui.tagtree.TagTreeModel.getSwfInfo(TagTreeModel.java:449)
at
com.jpexs.decompiler.flash.gui.tagtree.TagTreeModel.getSwfFolders(TagTreeModel.java:462)
at
com.jpexs.decompiler.flash.gui.tagtree.TagTreeModel.getAllChildren(TagTreeModel.java:511)
at
com.jpexs.decompiler.flash.gui.tagtree.AbstractTagTreeModel.calculateCollisions(AbstractTa
gTreeModel.java:56)
at
com.jpexs.decompiler.flash.gui.tagtree.AbstractTagTreeModel.calculateCollisions(AbstractTa
gTreeModel.java:70)
at
com.jpexs.decompiler.flash.gui.tagtree.AbstractTagTreeModel.calculateCollisions(AbstractTa
gTreeModel.java:51)
at com.jpexs.decompiler.flash.gui.tagtree.TagTreeModel.updateSwfs(TagTreeModel.java:148)
at com.jpexs.decompiler.flash.gui.MainPanel.lambda$new$0(MainPanel.java:1249)
at
com.jpexs.decompiler.flash.gui.helpers.ObservableList.fireCollectionChanged(ObservableList
.java:223)
at com.jpexs.decompiler.flash.gui.helpers.ObservableList.add(ObservableList.java:68)
at com.jpexs.decompiler.flash.gui.MainPanel.load(MainPanel.java:1399)
at
com.jpexs.decompiler.flash.gui.Main$OpenFileWorker.lambda$doInBackground$0(Main.java:1573)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:301)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
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.awt.EventQueue.dispatchEvent(EventQueue.java:728)
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)
```
> What version of the product are you using? Is it "nightly build"? Which operating system
do you have?
FFDec 18.5.0 on Linux
> Please provide any additional information below. If the problem is related to a SWF
file, attach it here, otherwise we can't help you.
The attached playerglobal.swf is an unusual file - it's part of the Ruffle flash emulator,
and is compiled using `asc.jar` with `-apiversioning`. It's not run as a normal SWF -
instead, Ruffle extracts data from it during load time. Let me know if you need more
details about how it's built (it's associated with https://github.com/ruffle-rs/ruffle/pull/12967)

I have added basic support for api-versioned SWFs in nightly 2584, try it.
However, I don't recommend you to use AS3 direct editation in it, since it currently does
not compile the versioning back.
State: new→upgraded
Type: bug→feature
Type: bug→feature
I also want to inform you that since nightly 2590, compound scripts (scripts which contain
more than one externally visible definitions) are displayed in separate trees. Also,
direct AS3 editing is disabled for them.
State: upgraded→closed