diff --git a/CHANGELOG.md b/CHANGELOG.md index a4cc04d5e..427ee131a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,9 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +### Added +- [#1459], [#1832], [#1849] AS1/2 direct editarion - Error dialog when saved value (UI16, SI16, ...) exceeds its limit and this code cannot be saved. + ### Fixed - Flash viewer - subtract blend mode - [#1712], [#1857] JPEG images errors fixer @@ -2466,6 +2469,9 @@ All notable changes to this project will be documented in this file. [alpha 9]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha8...alpha9 [alpha 8]: https://github.com/jindrapetrik/jpexs-decompiler/compare/alpha7...alpha8 [alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7 +[#1459]: https://www.free-decompiler.com/flash/issues/1459 +[#1832]: https://www.free-decompiler.com/flash/issues/1832 +[#1849]: https://www.free-decompiler.com/flash/issues/1849 [#1712]: https://www.free-decompiler.com/flash/issues/1712 [#1857]: https://www.free-decompiler.com/flash/issues/1857 [#1860]: https://www.free-decompiler.com/flash/issues/1860 diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFOutputStream.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFOutputStream.java index 5925fc73f..538142837 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFOutputStream.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/SWFOutputStream.java @@ -167,7 +167,7 @@ public class SWFOutputStream extends OutputStream { */ public void writeUI8(int value) throws IOException { if (value > 0xff) { - throw new IllegalArgumentException("Value is too large for UI8: " + value); + throw new ValueTooLargeException("UI8", value); } write(value); @@ -224,7 +224,7 @@ public class SWFOutputStream extends OutputStream { */ public void writeUI32(long value) throws IOException { if (value > 0xffffffffL) { - throw new IllegalArgumentException("Value is too large for UI32: " + value); + throw new ValueTooLargeException("UI32", value); } write((int) (value & 0xff)); @@ -241,7 +241,7 @@ public class SWFOutputStream extends OutputStream { */ public void writeUI16(int value) throws IOException { if (value > 0xffff) { - throw new IllegalArgumentException("Value is too large for UI16: " + value); + throw new ValueTooLargeException("UI16", value); } write((int) (value & 0xff)); @@ -256,7 +256,7 @@ public class SWFOutputStream extends OutputStream { */ public void writeSI32(long value) throws IOException { if (value > 0x7fffffffL) { - throw new IllegalArgumentException("Value is too large for SI32: " + value); + throw new ValueTooLargeException("SI32", value); } writeUI32(value); @@ -271,8 +271,7 @@ public class SWFOutputStream extends OutputStream { public void writeSI16(int value) throws IOException { if (value > 0x7fff) { - Logger.getLogger(SWFOutputStream.class.getName()).log(Level.WARNING, "Value is too large for SI16: " + value + ", 0 written", new Exception()); - value = 0; + throw new ValueTooLargeException("SI16", value); } writeUI16(value); @@ -286,7 +285,7 @@ public class SWFOutputStream extends OutputStream { */ public void writeSI8(int value) throws IOException { if (value > 0x7ff) { - throw new IllegalArgumentException("Value is too large for SI8: " + value); + throw new ValueTooLargeException("SI8", value); } writeUI8(value); diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ValueTooLargeException.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ValueTooLargeException.java new file mode 100644 index 000000000..846f66446 --- /dev/null +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/ValueTooLargeException.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2010-2021 JPEXS, All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 3.0 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library. + */ +package com.jpexs.decompiler.flash; + +/** + * + * @author JPEXS + */ +public class ValueTooLargeException extends IllegalArgumentException { + private final String type; + private final Object value; + + public ValueTooLargeException(String type, Object value) { + super("Value is too large for " + type + ": " + value); + this.type = type; + this.value = value; + } + + public String getType() { + return type; + } + + public Object getValue() { + return value; + } + +} diff --git a/src/com/jpexs/decompiler/flash/gui/action/ActionPanel.java b/src/com/jpexs/decompiler/flash/gui/action/ActionPanel.java index 68813d383..8297ca9a0 100644 --- a/src/com/jpexs/decompiler/flash/gui/action/ActionPanel.java +++ b/src/com/jpexs/decompiler/flash/gui/action/ActionPanel.java @@ -18,6 +18,7 @@ package com.jpexs.decompiler.flash.gui.action; import com.jpexs.decompiler.flash.DisassemblyListener; import com.jpexs.decompiler.flash.SWF; +import com.jpexs.decompiler.flash.ValueTooLargeException; import com.jpexs.decompiler.flash.action.Action; import com.jpexs.decompiler.flash.action.ActionGraph; import com.jpexs.decompiler.flash.action.ActionList; @@ -1087,6 +1088,8 @@ public class ActionPanel extends JPanel implements SearchListener