error message when constant pool is too big

This commit is contained in:
2015-07-18 08:23:09 +02:00
parent 0b4ea14a95
commit 35cfe219a4
4 changed files with 22 additions and 2 deletions
@@ -30,6 +30,7 @@ import com.jpexs.decompiler.flash.action.parser.script.ParsedSymbol;
import com.jpexs.decompiler.flash.action.parser.script.SymbolType;
import com.jpexs.decompiler.flash.action.swf4.ActionPush;
import com.jpexs.decompiler.flash.action.swf4.ConstantIndex;
import com.jpexs.decompiler.flash.action.swf5.ActionConstantPool;
import com.jpexs.decompiler.flash.configuration.Configuration;
import com.jpexs.decompiler.flash.exporters.modes.ScriptExportMode;
import com.jpexs.decompiler.flash.gui.AppStrings;
@@ -786,7 +787,16 @@ public class ActionPanel extends JPanel implements SearchListener<ActionSearchRe
if (trimmed.startsWith(Helper.hexData)) {
src.setActionBytes(Helper.getBytesFromHexaText(text));
} else if (trimmed.startsWith(Helper.constants)) {
src.setConstantPools(Helper.getConstantPoolsFromText(text));
List<List<String>> constantPools = Helper.getConstantPoolsFromText(text);
for (int i = 0; i < constantPools.size(); i++) {
List<String> constantPool = constantPools.get(i);
int size = ActionConstantPool.calculateSize(constantPool);
if (size > 0xffff) {
View.showMessageDialog(this, AppStrings.translate("error.constantPoolTooBig").replace("%index%", Integer.toString(i)).replace("%size%", Integer.toString(size)), AppStrings.translate("error"), JOptionPane.ERROR_MESSAGE);
}
}
src.setConstantPools(constantPools);
} else {
src.setActions(ASMParser.parse(0, true, text, src.getSwf().version, false));
}
@@ -806,6 +816,8 @@ public class ActionPanel extends JPanel implements SearchListener<ActionSearchRe
editor.gotoLine((int) ex.line);
editor.markError();
View.showMessageDialog(this, AppStrings.translate("error.action.save").replace("%error%", ex.text).replace("%line%", Long.toString(ex.line)), AppStrings.translate("error"), JOptionPane.ERROR_MESSAGE);
} catch (Throwable ex) {
logger.log(Level.SEVERE, null, ex);
}
}
@@ -623,3 +623,5 @@ filter.linuxExe = Linux Executable files
import.script.result = %count% scripts imported.
import.script.as12warning = Import script can import only AS1/2 scripts.
error.constantPoolTooBig = Constant pool is too big. index=%index%, size=%size%
@@ -622,3 +622,5 @@ filter.linuxExe = Linux futtathat\u00f3 f\u00e1jlok
import.script.result = %count% szkript import\u00e1lva.
import.script.as12warning = A szkript import\u00e1l\u00e1s csak AS1/2 szkriptekre m\u0171k\u00f6dik.
error.constantPoolTooBig = Karakter l\u00e1nc t\u00e1rol\u00f3 t\u00fal nagy. index=%index%, m\u00e9ret=%size%