Fixed #1904 NullPointerException on decompiler pool

Fixed #1904 AS1/2 Simplify expressions breaks registers, functions
This commit is contained in:
Jindra Petřík
2022-12-20 10:38:49 +01:00
parent 47cd0c83ff
commit 2bd1208f86
5 changed files with 18 additions and 9 deletions

View File

@@ -109,7 +109,7 @@ public class DecompilerPool {
HighlightedText result = new HighlightedText(writer);
Openable openable = pack.getOpenable();
SWF swf = (openable instanceof SWF) ? (SWF) openable : ((ABC)openable).getSwf();
SWF swf = (openable instanceof SWF) ? (SWF) openable : ((ABC) openable).getSwf();
if (swf != null) {
swf.as3Cache.put(pack, result);
}
@@ -210,13 +210,15 @@ public class DecompilerPool {
if (!executor.awaitTermination(100, TimeUnit.SECONDS)) {
}
}
public void destroySwf(SWF swf){
public void destroySwf(SWF swf) {
List<Future<HighlightedText>> futures = openableToFutures.get(swf);
if(futures!=null){
for(Future<HighlightedText> future:futures){
future.cancel(true);
}
if (futures != null) {
for (Future<HighlightedText> future : futures) {
if (future != null) {
future.cancel(true);
}
}
}
}
}

View File

@@ -206,7 +206,7 @@ public class DirectValueActionItem extends ActionItem implements SimpleValue {
}
dependencies.add(computedRegValue);
}
return (value instanceof Double) || (value instanceof Float) || (value instanceof Boolean) || (value instanceof Long) || (value == Null.INSTANCE) || (computedRegValue != null && computedRegValue.isCompileTime(dependencies)) || (value instanceof String) || (value instanceof ConstantIndex);
return (value instanceof Double) || (value instanceof Float) || (value instanceof Boolean) || (value instanceof Long) || (value == Null.INSTANCE) || (value instanceof String) || (value instanceof ConstantIndex);
}
@Override

View File

@@ -225,6 +225,8 @@ public class FunctionActionItem extends ActionItem implements BranchStackResista
return false;
}
/*
NOT COMPILE TIME! This causes problems in simplifyExpressions, etc.
@Override
public boolean isCompileTime(Set<GraphTargetItem> dependencies) {
for (GraphTargetItem a : actions) {
@@ -237,7 +239,7 @@ public class FunctionActionItem extends ActionItem implements BranchStackResista
}
}
return true;
}
}*/
@Override
public Object getResult() {

View File

@@ -136,6 +136,8 @@ public class StoreRegisterActionItem extends ActionItem implements SetTypeAction
return true;
}
/*
NOT COMPILE TIME! This causes problems in simplifyExpressions, etc.
@Override
public boolean isCompileTime(Set<GraphTargetItem> dependencies) {
if (dependencies.contains(value)) {
@@ -144,6 +146,7 @@ public class StoreRegisterActionItem extends ActionItem implements SetTypeAction
dependencies.add(value);
return value.isCompileTime(dependencies);
}
*/
@Override
public Object getResult() {