@@ -237,11 +237,20 @@ def CompressSectionData(self, TargetTree, pos: int, GuidTool=None) -> None:
237237 Size_delta = len (CompressedData ) - len (TargetTree .Data .OriData )
238238 ChangeSize (TargetTree , - Size_delta )
239239 if TargetTree .NextRel :
240+ Original_Pad_Size = len (TargetTree .Data .PadData )
240241 TargetTree .Data .PadData = b'\x00 ' * New_Pad_Size
241- self .Remain_New_Free_Space = len (TargetTree .Data .OriData ) + len (TargetTree .Data .PadData ) - len (CompressedData ) - New_Pad_Size
242+ self .Remain_New_Free_Space = (
243+ len (TargetTree .Data .OriData ) +
244+ Original_Pad_Size -
245+ len (CompressedData ) -
246+ New_Pad_Size
247+ )
242248 else :
243249 TargetTree .Data .PadData = b''
244- self .Remain_New_Free_Space = len (TargetTree .Data .OriData ) - len (CompressedData )
250+ self .Remain_New_Free_Space = (
251+ len (TargetTree .Data .OriData ) -
252+ len (CompressedData )
253+ )
245254 TargetTree .Data .OriData = CompressedData
246255 elif len (CompressedData ) == len (TargetTree .Data .OriData ):
247256 TargetTree .Data .OriData = CompressedData
@@ -347,15 +356,24 @@ def ModifyTest(self, ParTree, Needed_Space: int) -> None:
347356 ModifySectionType (ParTree )
348357 Needed_Space += ParTree .Data .HeaderLength - OriHeaderLen
349358 # Update needed space with Delta_Pad_Size
359+ Original_Pad_Size = len (ParTree .Data .PadData )
350360 if ParTree .NextRel :
351361 New_Pad_Size = GetPadSize (ParTree .Data .Size , SECTION_COMMON_ALIGNMENT )
352- Delta_Pad_Size = New_Pad_Size - len ( ParTree . Data . PadData )
362+ Delta_Pad_Size = New_Pad_Size - Original_Pad_Size
353363 ParTree .Data .PadData = b'\x00 ' * New_Pad_Size
354364 Needed_Space += Delta_Pad_Size
355365 else :
356366 ParTree .Data .PadData = b''
357367 if Needed_Space < 0 :
358- self .Remain_New_Free_Space = len (ParTree .Data .OriData ) - len (CompressedData )
368+ if ParTree .NextRel :
369+ self .Remain_New_Free_Space = (
370+ len (ParTree .Data .OriData ) + Original_Pad_Size -
371+ len (CompressedData ) - New_Pad_Size
372+ )
373+ else :
374+ self .Remain_New_Free_Space = (
375+ len (ParTree .Data .OriData ) - len (CompressedData )
376+ )
359377 # If current section is not guided section
360378 elif Needed_Space :
361379 ChangeSize (ParTree , - Needed_Space )
0 commit comments