Fixed AS1/2 - direct editation - allow call on numbers, boolean, etc.

This commit is contained in:
Jindra Petřík
2021-11-28 16:39:35 +01:00
parent 5f7106afd2
commit 11d5a55564
4 changed files with 11 additions and 10 deletions

View File

@@ -69,13 +69,10 @@ public class CallFunctionActionItem extends ActionItem {
if (functionName instanceof DirectValueActionItem) {
if (!IdentifiersDeobfuscation.isValidName(false, (functionName).toStringNoQuotes(localData))) {
writer.append("eval(");
functionName.toString(writer, localData);
writer.append(")");
} else {
functionName.toStringNoQuotes(writer, localData);
}
//writer.append(IdentifiersDeobfuscation.printIdentifier(false, (functionName).toStringNoQuotes(localData)));
} else {
functionName.appendTry(writer, localData);
}

View File

@@ -1801,18 +1801,19 @@ public class ActionScript2Parser {
break;
case TRUE:
ret = new DirectValueActionItem(null, null, 0, Boolean.TRUE, new ArrayList<>());
allowMemberOrCall = true;
break;
case NULL:
ret = new DirectValueActionItem(null, null, 0, Null.INSTANCE, new ArrayList<>());
allowMemberOrCall = true;
break;
case UNDEFINED:
ret = new DirectValueActionItem(null, null, 0, Undefined.INSTANCE, new ArrayList<>());
allowMemberOrCall = true;
break;
case FALSE:
ret = new DirectValueActionItem(null, null, 0, Boolean.FALSE, new ArrayList<>());
allowMemberOrCall = true;
break;
case CURLY_OPEN: //Object literal
s = lex();
@@ -1863,16 +1864,16 @@ public class ActionScript2Parser {
break;
case NAN:
ret = new DirectValueActionItem(null, null, 0, Double.NaN, new ArrayList<>());
allowMemberOrCall = true;
break;
case INFINITY:
ret = new DirectValueActionItem(null, null, 0, Double.POSITIVE_INFINITY, new ArrayList<>());
allowMemberOrCall = true;
break;
case INTEGER:
case DOUBLE:
ret = new DirectValueActionItem(null, null, 0, s.value, new ArrayList<>());
allowMemberOrCall = true;
break;
case DELETE:
GraphTargetItem varDel = expressionPrimary(false, inFunction, inMethod, inTellTarget, false, variables, functions, true, hasEval);

View File

@@ -82,6 +82,8 @@ public class AS2ScriptImporter {
logger.log(Level.SEVERE, "%error% on line %line%, file: %file%".replace("%error%", ex.text).replace("%line%", Long.toString(ex.line)).replace("%file%", fileName), ex);
} catch (IOException ex) {
logger.log(Level.SEVERE, "error during script import, file: %file%".replace("%file%", fileName), ex);
} catch (Exception ex) {
logger.log(Level.SEVERE, "error during script import, file: %file%".replace("%file%", fileName), ex);
}
asm.setModified();