@@ -450,6 +450,7 @@ def __init__(self, stream):
450450 self .TC_ARRAY : self .do_array ,
451451 self .TC_CLASS : self .do_class ,
452452 self .TC_BLOCKDATA : self .do_blockdata ,
453+ self .TC_BLOCKDATALONG : self .do_blockdata_long ,
453454 self .TC_REFERENCE : self .do_reference ,
454455 self .TC_ENUM : self .do_enum ,
455456 # note that we are reusing do_null:
@@ -681,6 +682,22 @@ def do_blockdata(self, parent=None, ident=0):
681682 # Ensure we have an str
682683 return read_to_str (ba )
683684
685+ def do_blockdata_long (self , parent = None , ident = 0 ):
686+ """
687+ Handles TC_BLOCKDATALONG opcode
688+
689+ :param parent:
690+ :param ident: Log indentation level
691+ :return: A string containing the block data
692+ """
693+ # TC_BLOCKDATALONG (int)<size> (byte)[size]
694+ log_debug ("[blockdatalong]" , ident )
695+ (length ,) = self ._readStruct (">I" )
696+ ba = self .object_stream .read (length )
697+
698+ # Ensure we have an str
699+ return read_to_str (ba )
700+
684701 def do_class (self , parent = None , ident = 0 ):
685702 """
686703 Handles TC_CLASS opcode
0 commit comments