File tree Expand file tree Collapse file tree 1 file changed +21
-22
lines changed
rust/examples/dwarf/dwarf_import/src Expand file tree Collapse file tree 1 file changed +21
-22
lines changed Original file line number Diff line number Diff line change @@ -382,43 +382,42 @@ impl CustomDebugInfoParser for DWARFParser {
382382 debug_file : & BinaryView ,
383383 progress : Box < dyn Fn ( usize , usize ) -> Result < ( ) , ( ) > > ,
384384 ) -> bool {
385- let external_file = if !dwarfreader:: is_valid ( bv) {
385+ let ( external_file, close_external ) = if !dwarfreader:: is_valid ( bv) {
386386 if dwarfreader:: has_build_id_section ( bv) {
387387 if let Ok ( Some ( debug_view) ) = helpers:: load_debug_info_for_build_id ( bv) {
388- Some ( debug_view)
389- }
390- else {
388+ ( Some ( debug_view) , false )
389+ } else {
391390 if dwarfreader:: can_use_debuginfod ( bv) {
392391 if let Ok ( debug_view) = helpers:: download_debug_info ( bv) {
393- Some ( debug_view)
392+ ( Some ( debug_view) , true )
394393 } else {
395- None
394+ ( None , false )
396395 }
397- }
398- else {
399- None
396+ } else {
397+ ( None , false )
400398 }
401399 }
400+ } else {
401+ ( None , false )
402402 }
403- else {
404- None
405- }
406- }
407- else {
408- None
403+ } else {
404+ ( None , false )
409405 } ;
410406
411- match parse_dwarf ( bv, external_file. as_deref ( ) . unwrap_or ( debug_file) , progress) {
407+ let result = match parse_dwarf ( bv, external_file. as_deref ( ) . unwrap_or ( debug_file) , progress)
408+ {
412409 Ok ( mut builder) => {
413- builder
414- . post_process ( bv, debug_info)
415- . commit_info ( debug_info) ;
410+ builder. post_process ( bv, debug_info) . commit_info ( debug_info) ;
416411 true
417- } ,
418- Err ( _) => {
419- false
420412 }
413+ Err ( _) => false ,
414+ } ;
415+
416+ if let ( Some ( ext) , true ) = ( external_file, close_external) {
417+ ext. file ( ) . close ( ) ;
421418 }
419+
420+ result
422421 }
423422}
424423
You can’t perform that action at this time.
0 commit comments