mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-09-26 21:20:44 +00:00
resolve as2 constants button
This commit is contained in:
@@ -17,7 +17,6 @@
|
||||
package com.jpexs.decompiler.flash;
|
||||
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.model.ConstantPool;
|
||||
import com.jpexs.decompiler.flash.action.special.ActionEnd;
|
||||
import com.jpexs.decompiler.flash.action.special.ActionNop;
|
||||
import com.jpexs.decompiler.flash.action.swf3.ActionGetURL;
|
||||
@@ -1565,11 +1564,10 @@ public class SWFInputStream implements AutoCloseable {
|
||||
/**
|
||||
* Reads one Action from the stream
|
||||
*
|
||||
* @param cpool
|
||||
* @return Action or null when ActionEndFlag or end of the stream
|
||||
* @throws IOException
|
||||
*/
|
||||
public Action readAction(ConstantPool cpool) throws IOException {
|
||||
public Action readAction() throws IOException {
|
||||
int actionCode = -1;
|
||||
|
||||
try {
|
||||
@@ -1603,7 +1601,7 @@ public class SWFInputStream implements AutoCloseable {
|
||||
case 0x09:
|
||||
return new ActionStopSounds();
|
||||
case 0x8A:
|
||||
return new ActionWaitForFrame(actionLength, this, cpool);
|
||||
return new ActionWaitForFrame(actionLength, this);
|
||||
case 0x8B:
|
||||
return new ActionSetTarget(actionLength, this, swf.version);
|
||||
case 0x8C:
|
||||
@@ -1684,7 +1682,7 @@ public class SWFInputStream implements AutoCloseable {
|
||||
case 0x28:
|
||||
return new ActionEndDrag();
|
||||
case 0x8D:
|
||||
return new ActionWaitForFrame2(actionLength, this, cpool);
|
||||
return new ActionWaitForFrame2(actionLength, this);
|
||||
case 0x26:
|
||||
return new ActionTrace();
|
||||
case 0x34:
|
||||
|
||||
@@ -131,13 +131,11 @@ public class ActionListReader {
|
||||
* @throws java.lang.InterruptedException
|
||||
*/
|
||||
public static ActionList readActionList(List<DisassemblyListener> listeners, SWFInputStream sis, int version, int ip, int endIp, String path, int deobfuscationMode) throws IOException, InterruptedException {
|
||||
ConstantPool cpool = new ConstantPool();
|
||||
|
||||
// Map of the actions. Use TreeMap to sort the keys in ascending order
|
||||
// actionMap and nextOffsets should contain exaclty the same keys
|
||||
Map<Long, Action> actionMap = new TreeMap<>();
|
||||
Map<Long, Long> nextOffsets = new HashMap<>();
|
||||
Action entryAction = readActionListAtPos(listeners, cpool,
|
||||
Action entryAction = readActionListAtPos(listeners, null,
|
||||
sis, actionMap, nextOffsets,
|
||||
ip, 0, endIp, path, false, new ArrayList<Long>());
|
||||
|
||||
@@ -238,12 +236,10 @@ public class ActionListReader {
|
||||
}
|
||||
|
||||
public static List<Action> getOriginalActions(SWFInputStream sis, int startIp, int endIp) throws IOException, InterruptedException {
|
||||
ConstantPool cpool = new ConstantPool();
|
||||
|
||||
// Map of the actions. Use TreeMap to sort the keys in ascending order
|
||||
Map<Long, Action> actionMap = new TreeMap<>();
|
||||
Map<Long, Long> nextOffsets = new HashMap<>();
|
||||
readActionListAtPos(new ArrayList<DisassemblyListener>(), cpool,
|
||||
readActionListAtPos(new ArrayList<DisassemblyListener>(), null,
|
||||
sis, actionMap, nextOffsets,
|
||||
startIp, startIp, endIp + 1, "", false, new ArrayList<Long>());
|
||||
|
||||
@@ -690,7 +686,7 @@ public class ActionListReader {
|
||||
sis.seek((int) ip);
|
||||
|
||||
Action a;
|
||||
if ((a = sis.readAction(cpool)) == null) {
|
||||
if ((a = sis.readAction()) == null) {
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -729,10 +725,7 @@ public class ActionListReader {
|
||||
if (a instanceof ActionPush && cpool != null) {
|
||||
((ActionPush) a).constantPool = cpool.constants;
|
||||
} else if (a instanceof ActionConstantPool) {
|
||||
if (cpool == null) {
|
||||
cpool = new ConstantPool();
|
||||
}
|
||||
cpool.setNew(((ActionConstantPool) a).constantPool);
|
||||
cpool = new ConstantPool(((ActionConstantPool) a).constantPool);
|
||||
} else if (a instanceof ActionIf) {
|
||||
ActionIf aIf = (ActionIf) a;
|
||||
long nIp = ip + actionLengthWithHeader + aIf.getJumpOffset();
|
||||
|
||||
@@ -12,7 +12,8 @@
|
||||
* Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public
|
||||
* License along with this library.␍ */
|
||||
* License along with this library.
|
||||
*/
|
||||
package com.jpexs.decompiler.flash.action.parser.pcode;
|
||||
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
|
||||
@@ -22,7 +22,6 @@ import com.jpexs.decompiler.flash.SWFOutputStream;
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.ActionGraph;
|
||||
import com.jpexs.decompiler.flash.action.ActionList;
|
||||
import com.jpexs.decompiler.flash.action.model.ConstantPool;
|
||||
import com.jpexs.decompiler.flash.action.model.DirectValueActionItem;
|
||||
import com.jpexs.decompiler.flash.action.model.clauses.IfFrameLoadedActionItem;
|
||||
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
|
||||
@@ -46,7 +45,7 @@ public class ActionWaitForFrame extends Action implements ActionStore {
|
||||
|
||||
public List<Action> skipped;
|
||||
|
||||
public ActionWaitForFrame(int actionLength, SWFInputStream sis, ConstantPool cpool) throws IOException {
|
||||
public ActionWaitForFrame(int actionLength, SWFInputStream sis) throws IOException {
|
||||
super(0x8A, actionLength);
|
||||
frame = sis.readUI16("frame");
|
||||
skipCount = sis.readUI8("skipCount");
|
||||
|
||||
+1
-2
@@ -22,7 +22,6 @@ import com.jpexs.decompiler.flash.SWFOutputStream;
|
||||
import com.jpexs.decompiler.flash.action.Action;
|
||||
import com.jpexs.decompiler.flash.action.ActionGraph;
|
||||
import com.jpexs.decompiler.flash.action.ActionList;
|
||||
import com.jpexs.decompiler.flash.action.model.ConstantPool;
|
||||
import com.jpexs.decompiler.flash.action.model.clauses.IfFrameLoadedActionItem;
|
||||
import com.jpexs.decompiler.flash.action.parser.ActionParseException;
|
||||
import com.jpexs.decompiler.flash.action.parser.pcode.FlasmLexer;
|
||||
@@ -60,7 +59,7 @@ public class ActionWaitForFrame2 extends Action implements ActionStore {
|
||||
skipCount = store.size();
|
||||
}
|
||||
|
||||
public ActionWaitForFrame2(int actionLength, SWFInputStream sis, ConstantPool cpool) throws IOException {
|
||||
public ActionWaitForFrame2(int actionLength, SWFInputStream sis) throws IOException {
|
||||
super(0x8D, actionLength);
|
||||
skipCount = sis.readUI8("skipCount");
|
||||
skipped = new ArrayList<>();
|
||||
|
||||
@@ -46,6 +46,7 @@ public class ConstantIndex implements Serializable {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "constant" + index;
|
||||
}
|
||||
|
||||
@@ -58,6 +59,7 @@ public class ConstantIndex implements Serializable {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "constant" + index;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -196,6 +196,7 @@ public class DefineButtonTag extends ButtonTag implements ASMSource {
|
||||
if (prevLength != 0) {
|
||||
rri.seek(prevLength);
|
||||
}
|
||||
|
||||
ActionList list = ActionListReader.readActionListTimeout(listeners, rri, getVersion(), prevLength, prevLength + actionBytes.getLength(), toString()/*FIXME?*/);
|
||||
return list;
|
||||
} catch (InterruptedException ex) {
|
||||
|
||||
@@ -131,6 +131,7 @@ public class DoActionTag extends Tag implements ASMSource {
|
||||
if (prevLength != 0) {
|
||||
rri.seek(prevLength);
|
||||
}
|
||||
|
||||
ActionList list = ActionListReader.readActionListTimeout(listeners, rri, getVersion(), prevLength, prevLength + actionBytes.getLength(), toString()/*FIXME?*/);
|
||||
return list;
|
||||
} catch (InterruptedException ex) {
|
||||
|
||||
@@ -138,6 +138,7 @@ public class DoInitActionTag extends Tag implements CharacterIdTag, ASMSource {
|
||||
if (prevLength != 0) {
|
||||
rri.seek(prevLength);
|
||||
}
|
||||
|
||||
ActionList list = ActionListReader.readActionListTimeout(listeners, rri, getVersion(), prevLength, prevLength + actionBytes.getLength(), toString()/*FIXME?*/);
|
||||
return list;
|
||||
} catch (InterruptedException ex) {
|
||||
|
||||
@@ -205,6 +205,7 @@ public class BUTTONCONDACTION implements ASMSource, Serializable {
|
||||
if (prevLength != 0) {
|
||||
rri.seek(prevLength);
|
||||
}
|
||||
|
||||
ActionList list = ActionListReader.readActionListTimeout(listeners, rri, swf.version, prevLength, prevLength + actionBytes.getLength(), toString()/*FIXME?*/);
|
||||
return list;
|
||||
|
||||
|
||||
@@ -199,6 +199,7 @@ public class CLIPACTIONRECORD implements ASMSource, Serializable {
|
||||
if (prevLength != 0) {
|
||||
rri.seek(prevLength);
|
||||
}
|
||||
|
||||
ActionList list = ActionListReader.readActionListTimeout(listeners, rri, swf.version, prevLength, prevLength + actionBytes.getLength(), toString()/*FIXME?*/);
|
||||
return list;
|
||||
} catch (InterruptedException ex) {
|
||||
|
||||
Reference in New Issue
Block a user