@@ -586,7 +586,7 @@ filter_modules(Modules, ParsedFiles) ->
586586% % @private
587587parse_file (beam , _ModuleName , Data , IncludeLines ) ->
588588 {ok , Module , Chunks } = beam_lib :all_chunks (Data ),
589- {UncompressedChunks , UncompressedLiterals } = uncompress_literals (Chunks ),
589+ {UncompressedChunks , UncompressedLiterals } = maybe_uncompress_literals (Chunks ),
590590 FilteredChunks = filter_chunks (UncompressedChunks , IncludeLines ),
591591 {ok , Binary } = beam_lib :build_module (FilteredChunks ),
592592 {ok , {Module , ChunkRefs }} = beam_lib :chunks (Data , [imports , exports , atoms ]),
@@ -707,23 +707,29 @@ strip_padding(Data) ->
707707 Data .
708708
709709% % @private
710- uncompress_literals (Chunks ) ->
710+ maybe_uncompress_literals (Chunks ) ->
711711 case proplists :get_value (" LitT" , Chunks ) of
712712 undefined ->
713713 {Chunks , undefined };
714- <<_Header :4 /binary , Data /binary >> ->
715- UncompressedData = zlib :uncompress (Data ),
716- {
717- lists :keyreplace (
718- " LitT" ,
719- 1 ,
720- Chunks ,
721- {" LitU" , UncompressedData }
722- ),
723- UncompressedData
724- }
714+ <<0 :32 , Data /binary >> ->
715+ {Chunks , Data };
716+ <<_Size :4 /binary , Data /binary >> ->
717+ do_uncompress_literals (Chunks , Data )
725718 end .
726719
720+ % % @private
721+ do_uncompress_literals (Chunks , Data ) ->
722+ UncompressedData = zlib :uncompress (Data ),
723+ {
724+ lists :keyreplace (
725+ " LitT" ,
726+ 1 ,
727+ Chunks ,
728+ {" LitU" , UncompressedData }
729+ ),
730+ UncompressedData
731+ }.
732+
727733% % @private
728734write_packbeam (OutputFilePath , ParsedFiles ) ->
729735 PackedData =
0 commit comments