Skip to content

Commit ff40e84

Browse files
committed
fix: return early if no modules exist when displaying dependent modules
Currently, when no modules exist, pressing "D" or "Alt+D" to display dependent modules will crash the program. Check whether the list is empty and return early to solve this problem.
1 parent 7d47330 commit ff40e84

File tree

1 file changed

+31
-25
lines changed

1 file changed

+31
-25
lines changed

src/app.rs

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -248,32 +248,38 @@ impl App {
248248
) {
249249
// If there is no space in "used_modules", return a vector with "-"
250250
// Otherwise, split the modules by commas and collect them into a vector
251-
let dependent_modules_list = kernel_modules.default_list
252-
[kernel_modules.index][2]
253-
.rsplit_once(' ')
254-
.map_or(vec!["-"], |(_, modules)| modules.split(',').collect());
255-
if !(dependent_modules_list[0] == "-"
256-
|| kernel_modules.current_name.contains("Dependent modules"))
257-
|| cfg!(test)
258-
{
259-
kernel_modules.info_scroll_offset = 0;
260-
kernel_modules.command = ModuleCommand::None;
261-
kernel_modules.current_name = format!(
262-
"!Dependent modules of {}{}",
263-
kernel_modules.current_name,
264-
self.style.unicode.get(Symbol::HistoricSite)
265-
);
266-
let mut dependent_modules = Vec::new();
267-
for module in &dependent_modules_list {
268-
dependent_modules.push(Line::from(vec![
269-
Span::styled("-", self.style.colored),
270-
Span::styled(format!(" {module}"), self.style.default),
271-
]));
251+
let current_line = kernel_modules.default_list.get(kernel_modules.index);
252+
253+
if let Some(line) = current_line {
254+
let dependent_modules_list = line[2]
255+
.rsplit_once(' ')
256+
.map_or(vec!["-"], |(_, modules)| modules.split(',').collect());
257+
258+
if !(dependent_modules_list[0] == "-"
259+
|| kernel_modules.current_name.contains("Dependent modules"))
260+
|| cfg!(test)
261+
{
262+
kernel_modules.info_scroll_offset = 0;
263+
kernel_modules.command = ModuleCommand::None;
264+
kernel_modules.current_name = format!(
265+
"!Dependent modules of {}{}",
266+
kernel_modules.current_name,
267+
self.style.unicode.get(Symbol::HistoricSite)
268+
);
269+
let mut dependent_modules = Vec::new();
270+
for module in &dependent_modules_list {
271+
dependent_modules.push(Line::from(vec![
272+
Span::styled("-", self.style.colored),
273+
Span::styled(format!(" {module}"), self.style.default),
274+
]));
275+
}
276+
kernel_modules.current_info.set(
277+
Text::from(dependent_modules),
278+
kernel_modules.current_name.clone(),
279+
);
272280
}
273-
kernel_modules.current_info.set(
274-
Text::from(dependent_modules),
275-
kernel_modules.current_name.clone(),
276-
);
281+
} else {
282+
return;
277283
}
278284
}
279285

0 commit comments

Comments
 (0)