Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
352456d257 | ||
|
|
d6544ae7cb | ||
|
|
37cd4b415b | ||
|
|
62d0756dbc |
@@ -1,6 +1,13 @@
|
||||
RABCDAsm Changelog
|
||||
==================
|
||||
|
||||
RABCDAsm v1.8 (2011.07.06)
|
||||
--------------------------
|
||||
|
||||
* Fixed handling of orphan methods with multiple references
|
||||
* Treat out-of-bounds namespace/multiname indices as null
|
||||
* Documentation updates
|
||||
|
||||
RABCDAsm v1.7 (2011.06.14)
|
||||
--------------------------
|
||||
|
||||
|
||||
@@ -416,11 +416,15 @@ RABCDAsm users.
|
||||
oSession.SaveResponseBody(path);
|
||||
}
|
||||
|
||||
A more robust version of the above snippet is available as a Fiddler plugin
|
||||
[here][FiddlerAutoCapture].
|
||||
|
||||
Once you have edited a SWF file, you can use Fiddler's [AutoResponder][] to
|
||||
replace the original file with your modified version.
|
||||
|
||||
[Fiddler]: http://www.fiddler2.com/fiddler2/
|
||||
[AutoResponder]: http://www.fiddler2.com/fiddler2/help/AutoResponder.asp
|
||||
[FiddlerAutoCapture]: https://github.com/CyberShadow/FiddlerAutoCapture
|
||||
|
||||
Limitations
|
||||
===========
|
||||
|
||||
+3
-3
@@ -622,10 +622,10 @@ private final class ABCtoAS
|
||||
r.arguments[i].stringv = abc.strings[instruction.arguments[i].index];
|
||||
break;
|
||||
case OpcodeArgumentType.Namespace:
|
||||
r.arguments[i].namespacev = namespaces[instruction.arguments[i].index];
|
||||
r.arguments[i].namespacev = namespaces.checkedGet(instruction.arguments[i].index);
|
||||
break;
|
||||
case OpcodeArgumentType.Multiname:
|
||||
r.arguments[i].multinamev = multinames[instruction.arguments[i].index];
|
||||
r.arguments[i].multinamev = multinames.checkedGet(instruction.arguments[i].index);
|
||||
break;
|
||||
case OpcodeArgumentType.Class:
|
||||
r.arguments[i].classv = classes.checkedGet(instruction.arguments[i].index);
|
||||
@@ -1562,7 +1562,7 @@ private bool contains(T)(T[] arr, T val)
|
||||
return false;
|
||||
}
|
||||
|
||||
private T checkedGet(T)(T[] array, uint index, T def = null)
|
||||
private T checkedGet(T)(T[] array, uint index, T def = T.init)
|
||||
{
|
||||
return index < array.length ? array[index] : def;
|
||||
}
|
||||
|
||||
+4
-2
@@ -238,8 +238,10 @@ final class RefBuilder : ASTraitsVisitor
|
||||
}
|
||||
else
|
||||
{
|
||||
enforce(p !in contexts, format("Duplicate object reference: ", contexts[p], " and ", context));
|
||||
contexts[p] = context.dup;
|
||||
if (p in contexts)
|
||||
contexts[p] = [ContextItem("multireferenced")];
|
||||
else
|
||||
contexts[p] = context.dup;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user