@@ -755,15 +755,16 @@ def do_object(self, parent=None, ident=0):
755755 self .TC_NULL , self .TC_REFERENCE ))
756756 # self.TC_REFERENCE hasn't shown in spec, but actually is here
757757
758- self ._add_reference (java_object , ident )
759-
760758 # classdata[]
761759
762760 # Store classdesc of this object
763761 java_object .classdesc = classdesc
764762
765763 if classdesc .flags & self .SC_EXTERNALIZABLE \
766764 and not classdesc .flags & self .SC_BLOCK_DATA :
765+ # Store the reference anyway (to avoid a delta in indices)
766+ self ._add_reference (java_object , ident )
767+
767768 # TODO:
768769 raise NotImplementedError ("externalContents isn't implemented yet" )
769770
@@ -825,6 +826,9 @@ def do_object(self, parent=None, ident=0):
825826 java_object = tmp_object
826827 break
827828
829+ # Store the reference
830+ self ._add_reference (java_object , ident )
831+
828832 log_debug (">>> java_object: {0}" .format (java_object ), ident )
829833 return java_object
830834
@@ -903,7 +907,9 @@ def do_reference(self, parent=None, ident=0):
903907 """
904908 (handle ,) = self ._readStruct (">L" )
905909 log_debug ("## Reference handle: 0x{0:X}" .format (handle ), ident )
906- return self .references [handle - self .BASE_REFERENCE_IDX ]
910+ ref = self .references [handle - self .BASE_REFERENCE_IDX ]
911+ log_debug ("Reference: %s" % ref )
912+ return ref
907913
908914 @staticmethod
909915 def do_null (parent = None , ident = 0 ):
0 commit comments