4 Commits
4 changed files with 18 additions and 5 deletions
+7
View File
@@ -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)
--------------------------
+4
View File
@@ -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
View File
@@ -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
View File
@@ -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;
}
}