* re-detect DPI scale each launch instead of using stale saved value
* make uiScale config default null
---------
Co-authored-by: Jindra Petřík <jindra.petrik@gmail.com>
handleSetMember crashed while decompiling AS2 code that applies `--` to a
virtual (`__get__`/`__set__`) property, e.g. `this.prop--` where `prop` is
defined via addProperty. The decrement-setter branch built a
PreDecrementActionItem but cast the value to IncrementActionItem instead of
DecrementActionItem, throwing ClassCastException.
That exception was then masked: it propagated into the finally block before
addToOutput ran, so `output` was empty and `output.remove(output.size() - 1)`
threw IndexOutOfBoundsException, replacing the real cause. The reported error
was therefore always a misleading "Index -1 out of bounds for length 0",
which also aborts loading entirely when "automatically rename identifiers" is
enabled (deobfuscateIdentifiers decompiles every script on load).
Fixes:
- Cast value to DecrementActionItem in the PreDecrement setter branch.
- Guard the finally against an empty output (mirrors cleanupTemp) so a future
exception in the try block is no longer masked.
Affected code now decompiles correctly to `++prop` / `--prop`.
Anonymous functions with names that are part of for example
function call.
f(5, function myName() {
});
The problem with this was introduced with adding temporary registers
for swap operation.
Fixes#2714
ScriptPacks that are duplicate - multiple packs with the same name
exist - are displayed and can be edited / deleted / ...
Previously, there was SEVERE error logged when such state was
detected, now only WARNING is issued.
XBT files are DDS textures with a custom header prepended, used by
some Scaleform GFX games. GFX tags reference them as .dds but the
files on disk use the .xbt extension.
- Fall back to .xbt extension when the referenced file is not found
- Scan for DDS magic bytes to strip the XBT header before decoding