@@ -24,15 +24,14 @@ impl Mapping {
2424 Context :: new ( stash, Object :: parse ( data) ?, None , None )
2525 } else {
2626 let archive = ArchiveFile :: parse ( data) . ok ( ) ?;
27- for member in archive. members ( ) {
28- if let Ok ( member) = member {
29- let name = OsStr :: from_bytes ( member. name ( ) ) ;
30- if name == member_name {
31- let member_data = member. data ( data) . ok ( ) ?;
32- if let Some ( obj) = Object :: parse ( member_data) {
33- return Context :: new ( stash, obj, None , None ) ;
34- }
35- }
27+ for member in archive
28+ . members ( )
29+ . filter_map ( |m| m. ok ( ) )
30+ . filter ( |m| OsStr :: from_bytes ( m. name ( ) ) == member_name)
31+ {
32+ let member_data = member. data ( data) . ok ( ) ?;
33+ if let Some ( obj) = Object :: parse ( member_data) {
34+ return Context :: new ( stash, obj, None , None ) ;
3635 }
3736 }
3837 None
@@ -64,16 +63,20 @@ pub fn parse_xcoff(data: &[u8]) -> Option<Image> {
6463 let _ = header. aux_header ( data, & mut offset) . ok ( ) ?;
6564 let sections = header. sections ( data, & mut offset) . ok ( ) ?;
6665 if let Some ( section) = sections. iter ( ) . find ( |s| {
67- let name = str:: from_utf8 ( & s. s_name ( ) [ 0 ..5 ] ) . unwrap ( ) ;
68- return name == ".text" ;
66+ if let Ok ( name) = str:: from_utf8 ( & s. s_name ( ) [ 0 ..5 ] ) {
67+ name == ".text"
68+ } else {
69+ false
70+ }
6971 } ) {
70- return Some ( Image {
72+ Some ( Image {
7173 offset : section. s_scnptr ( ) as usize ,
7274 base : section. s_paddr ( ) as u64 ,
7375 size : section. s_size ( ) as usize ,
74- } ) ;
76+ } )
77+ } else {
78+ None
7579 }
76- return None ;
7780}
7881
7982pub fn parse_image ( path : & Path , member_name : & OsString ) -> Option < Image > {
@@ -83,18 +86,17 @@ pub fn parse_image(path: &Path, member_name: &OsString) -> Option<Image> {
8386 return parse_xcoff ( data) ;
8487 } else {
8588 let archive = ArchiveFile :: parse ( data) . ok ( ) ?;
86- for member in archive. members ( ) {
87- if let Ok ( member) = member {
88- let name = OsStr :: from_bytes ( member. name ( ) ) ;
89- if name == member_name {
90- let member_data = member. data ( data) . ok ( ) ?;
91- if let Some ( image) = parse_xcoff ( member_data) {
92- return Some ( image) ;
93- }
94- }
89+ for member in archive
90+ . members ( )
91+ . filter_map ( |m| m. ok ( ) )
92+ . filter ( |m| OsStr :: from_bytes ( m. name ( ) ) == member_name)
93+ {
94+ let member_data = member. data ( data) . ok ( ) ?;
95+ if let Some ( image) = parse_xcoff ( member_data) {
96+ return Some ( image) ;
9597 }
9698 }
97- return None ;
99+ None
98100 }
99101}
100102
@@ -108,7 +110,7 @@ impl<'a> Object<'a> {
108110 containing_csect : Some ( index) ,
109111 } => {
110112 if let Ok ( tgt_sym) = file. symbol_by_index ( index) {
111- return Self :: get_concrete_size ( file, & tgt_sym) ;
113+ Self :: get_concrete_size ( file, & tgt_sym)
112114 } else {
113115 0
114116 }
@@ -141,7 +143,7 @@ impl<'a> Object<'a> {
141143 } )
142144 . collect :: < Vec < _ > > ( ) ;
143145 syms. sort_by_key ( |s| s. address ) ;
144- return Some ( Object { syms, file } ) ;
146+ Some ( Object { syms, file } )
145147 }
146148
147149 pub fn section ( & self , _: & Stash , name : & str ) -> Option < & ' a [ u8 ] > {
0 commit comments