@@ -6725,10 +6725,13 @@ class _ListDataBase:
67256725 "data_block_len" ,
67266726 "data_block_nr" ,
67276727 "flags" ,
6728+ "flags_ext" ,
67286729 "id" ,
67296730 "links_nr" ,
67306731 "next_ld_addr" ,
67316732 "reserved0" ,
6733+ "zip_info" ,
6734+ "zip_info_inval" ,
67326735 )
67336736
67346737
@@ -6824,7 +6827,7 @@ def __init__(self, **kwargs: Unpack[ListDataKwargs]) -> None:
68246827
68256828 address += self .links_nr * 8
68266829
6827- self .flags , self .data_block_nr = unpack_from ("<2I " , stream , address )
6830+ self .flags , self .zip_info , self . zip_info_inval , self . flags_ext , self . self . data_block_nr = unpack_from ("<4BI " , stream , address )
68286831 address += 8
68296832 if self .flags & v4c .FLAG_LD_EQUAL_LENGHT :
68306833 (self .data_block_len ,) = UINT64_uf (stream , address )
@@ -6858,7 +6861,7 @@ def __init__(self, **kwargs: Unpack[ListDataKwargs]) -> None:
68586861 for i in range (self .data_block_nr ):
68596862 self [f"data_block_addr_{ i } " ] = links [i + 1 ]
68606863
6861- if self .flags & v4c .FLAG_LD_INVALIDATION_PRESENT :
6864+ if self .flags_ext & v4c .FLAG_LD_EXT_INVALIDATION_PRESENT :
68626865 for i in range (self .data_block_nr ):
68636866 self [f"invalidation_bits_addr_{ i } " ] = links [self .data_block_nr + 1 + i ]
68646867 else :
@@ -6886,7 +6889,7 @@ def __init__(self, **kwargs: Unpack[ListDataKwargs]) -> None:
68866889
68876890 links = unpack (f"<{ self .links_nr } Q" , stream .read (self .links_nr * 8 ))
68886891
6889- self .flags , self .data_block_nr = typing .cast (tuple [int , int ], unpack ("<2I " , stream .read (8 )))
6892+ self .flags , self .zip_info , self . zip_info_inval , self . flags_ext , self . self . data_block_nr = typing .cast (tuple [int , int ], unpack ("<4BI " , stream .read (8 )))
68906893
68916894 if self .flags & v4c .FLAG_LD_EQUAL_LENGHT :
68926895 (self .data_block_len ,) = UINT64_u (stream .read (8 ))
@@ -6924,7 +6927,7 @@ def __init__(self, **kwargs: Unpack[ListDataKwargs]) -> None:
69246927 for i in range (self .data_block_nr , 1 ):
69256928 self [f"data_block_addr_{ i } " ] = links [i ]
69266929
6927- if self .flags & v4c .FLAG_LD_INVALIDATION_PRESENT :
6930+ if self .flags_ext & v4c .FLAG_LD_EXT_INVALIDATION_PRESENT :
69286931 for i in range (self .data_block_nr , self .data_block_nr + 1 ):
69296932 self [f"invalidation_bits_addr_{ i } " ] = links [i ]
69306933
@@ -6936,12 +6939,16 @@ def __init__(self, **kwargs: Unpack[ListDataKwargs]) -> None:
69366939
69376940 self .data_block_nr = kwargs ["data_block_nr" ]
69386941 self .flags = kwargs ["flags" ]
6942+ self .flags_ext = kwargs .get ("flags_ext" , 0 )
6943+ self .zip_info = kwargs .get ("zip_info" , 0 )
6944+ self .zip_info_inval = kwargs .get ("zip_info_inval" , 0 )
6945+ self .flags_ext = kwargs ["flags_ext" ]
69396946 self .data_block_len = kwargs ["data_block_len" ]
69406947 self .next_ld_addr = 0
69416948
69426949 for i in range (self .data_block_nr ):
69436950 self [f"data_block_addr_{ i } " ] = kwargs [f"data_block_addr_{ i } " ] # type: ignore[literal-required]
6944- if self .flags & v4c .FLAG_LD_INVALIDATION_PRESENT :
6951+ if self .flags_ext & v4c .FLAG_LD_EXT_INVALIDATION_PRESENT :
69456952 self .links_nr = 2 * self .data_block_nr + 1
69466953
69476954 for i in range (self .data_block_nr ):
@@ -6970,12 +6977,12 @@ def __bytes__(self) -> bytes:
69706977 fmt += f"{ self .data_block_nr } Q"
69716978 keys += tuple (f"data_block_addr_{ i } " for i in range (self .data_block_nr ))
69726979
6973- if self .flags & v4c .FLAG_LD_INVALIDATION_PRESENT :
6980+ if self .flags & v4c .FLAG_LD_EXT_INVALIDATION_PRESENT :
69746981 fmt += f"{ self .data_block_nr } Q"
69756982 keys += tuple (f"invalidation_bits_addr_{ i } " for i in range (self .data_block_nr ))
69766983
6977- fmt += "2I "
6978- keys += ("flags" , "data_block_nr" )
6984+ fmt += "4BI "
6985+ keys += ("flags" , "zip_info" , "zip_info_inval" , "flags_ext" , " data_block_nr" )
69796986
69806987 if self .flags & v4c .FLAG_LD_EQUAL_LENGHT :
69816988 fmt += "Q"
0 commit comments