Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
ipojo-manipulator-1.12.0
-
None
Description
When the manipulator manipulates inner classes, the copied method are reusing the same access level than the initial (original method). For instance
public void foo()
is replaced by
public void __foo()
. However, reusing the same access level leads to a (missing) mediation on the invoke instruction we need to use to invoke this method. Despite this is working on traditional JVM (Oracle, HotSpot...), it fails on Dalvik.
The fix is straightforward. Copied methods should be private:
private void __foo()
Thus, we just need to use the
INVOKE_SPECIAL
instruction.