diff paraspace/injection.py @ 98:c0c127c7b37e

Check and fix issues of map sizes
author Thinker K.F. Li <thinker@codemud.net>
date Mon, 25 Jul 2011 20:37:32 +0800
parents 1769e52bdd9d
children 3898711adb2c
line wrap: on
line diff
--- a/paraspace/injection.py	Mon Jul 25 17:46:20 2011 +0800
+++ b/paraspace/injection.py	Mon Jul 25 20:37:32 2011 +0800
@@ -37,10 +37,17 @@
 def dex_type_2_array_attr_map():
     global dex_type_2_array_attr_map
     from paraspace.dexfile import DEXFile, array
+    from paraspace.dex_deptracker import _marker
+
+    def skip_marker_type(clazz):
+        while isinstance(clazz, _marker):
+            clazz = clazz.back_type
+            pass
+        return clazz
     
     attr_values = [(attr, getattr(DEXFile, attr))
                    for attr in dir(DEXFile)]
-    type_2_attr = dict([(value.child_type, attr)
+    type_2_attr = dict([(skip_marker_type(value.child_type), attr)
                         for attr, value in attr_values
                         if isinstance(value, array)])