Skip to content

Commit

Permalink
more reference fixing
Browse files Browse the repository at this point in the history
  • Loading branch information
AngheloAlf committed Aug 9, 2024
1 parent e2e2903 commit f21c540
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 23 deletions.
31 changes: 15 additions & 16 deletions src/rs/file.rs
Original file line number Diff line number Diff line change
Expand Up @@ -58,27 +58,22 @@ impl File {
utils::is_noload_section(&self.section_type)
}

pub fn find_symbol_by_name(&self, sym_name: &str) -> Option<symbol::Symbol> {
for sym in &self.symbols {
if sym.name == sym_name {
return Some(sym.clone());
}
}
None
pub fn find_symbol_by_name(&self, sym_name: &str) -> Option<&symbol::Symbol> {
self.symbols.iter().find(|&sym| sym.name == sym_name)
}

pub fn find_symbol_by_vram_or_vrom(&self, address: u64) -> Option<(symbol::Symbol, i64)> {
pub fn find_symbol_by_vram_or_vrom(&self, address: u64) -> Option<(&symbol::Symbol, i64)> {
let mut prev_sym: Option<&symbol::Symbol> = None;

let is_vram = address >= 0x1000000;

for sym in &self.symbols {
if sym.vram == address {
return Some((sym.clone(), 0));
return Some((sym, 0));
}
if let Some(sym_vrom_temp) = sym.vrom {
if sym_vrom_temp == address {
return Some((sym.clone(), 0));
return Some((sym, 0));
}
}

Expand All @@ -90,7 +85,7 @@ impl File {
if offset < 0 {
return None;
}
return Some((prev_sym_temp.clone(), offset));
return Some((prev_sym_temp, offset));
}
}
}
Expand All @@ -99,7 +94,7 @@ impl File {
if offset < 0 {
return None;
}
return Some((prev_sym_temp.clone(), offset));
return Some((prev_sym_temp, offset));
}
}

Expand All @@ -114,7 +109,7 @@ impl File {
if offset < 0 {
return None;
}
return Some((prev_sym_temp.clone(), offset));
return Some((prev_sym_temp, offset));
}
}

Expand All @@ -123,7 +118,7 @@ impl File {
if offset < 0 {
return None;
}
return Some((prev_sym_temp.clone(), offset));
return Some((prev_sym_temp, offset));
}
}
}
Expand Down Expand Up @@ -391,11 +386,15 @@ pub(crate) mod python_bindings {
}

pub fn findSymbolByName(&self, sym_name: &str) -> Option<symbol::Symbol> {
self.find_symbol_by_name(sym_name)
self.find_symbol_by_name(sym_name).cloned()
}

pub fn findSymbolByVramOrVrom(&self, address: u64) -> Option<(symbol::Symbol, i64)> {
self.find_symbol_by_vram_or_vrom(address)
if let Some((sym, offset)) = self.find_symbol_by_vram_or_vrom(address) {
Some((sym.clone(), offset))
} else {
None
}
}

#[staticmethod]
Expand Down
10 changes: 3 additions & 7 deletions src/rs/segment.rs
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ impl Segment {
if let Some(sym) = file.find_symbol_by_name(sym_name) {
return Some(found_symbol_info::FoundSymbolInfo::new_default(
file.clone(),
sym,
sym.clone(),
));
}
}
Expand All @@ -89,13 +89,10 @@ impl Segment {
address: u64,
) -> Option<found_symbol_info::FoundSymbolInfo> {
for file in &self.files_list {
if let Some(pair) = file.find_symbol_by_vram_or_vrom(address) {
let sym = pair.0;
let offset = pair.1;

if let Some((sym, offset)) = file.find_symbol_by_vram_or_vrom(address) {
return Some(found_symbol_info::FoundSymbolInfo::new(
file.clone(),
sym,
sym.clone(),
offset,
));
}
Expand All @@ -106,7 +103,6 @@ impl Segment {
pub fn mix_folders(&self) -> Self {
let mut new_segment = self.clone_no_filelist();

// <PathBuf, Vec<File>>
let mut aux_dict = HashMap::new();

// Put files in the same folder together
Expand Down

0 comments on commit f21c540

Please sign in to comment.