MCPcopy Create free account
hub / github.com/CodeSentryAI/lockbud / find_path_recursive

Function find_path_recursive

src/detector/memory/invalid_free.rs:340–365  ·  view source on GitHub ↗
(
    u: BasicBlock,
    d: BasicBlock,
    body: &Body<'_>,
    path: &mut Vec<BasicBlock>,
    visited: &mut BitSet<BasicBlock>,
    paths: &mut Vec<Vec<BasicBlock>>,
)

Source from the content-addressed store, hash-verified

338}
339
340fn find_path_recursive(
341 u: BasicBlock,
342 d: BasicBlock,
343 body: &Body<'_>,
344 path: &mut Vec<BasicBlock>,
345 visited: &mut BitSet<BasicBlock>,
346 paths: &mut Vec<Vec<BasicBlock>>,
347) {
348 visited.insert(u);
349 path.push(u);
350 if u == d {
351 // output
352 paths.push(path.clone());
353 } else {
354 let data = &body[u];
355 if let Some(ref term) = data.terminator {
356 for succ in term.successors() {
357 if !visited.contains(succ) {
358 find_path_recursive(succ, d, body, path, visited, paths);
359 }
360 }
361 }
362 }
363 path.pop();
364 visited.remove(u);
365}

Callers 1

paths_from_toMethod · 0.85

Calls 2

insertMethod · 0.80
successorsMethod · 0.45

Tested by

no test coverage detected