@@ -64,7 +64,9 @@ impl<'a> CallEdgeDetector<'a> {
6464 let called_function_name = module. identifier_at ( called_function_handle. name ) ;
6565 let module_id = module. self_id ( ) ;
6666 let source_module = module_id. address ( ) ;
67- let target_module = module. address_identifiers ( ) [ called_function_handle. module . 0 as usize ] ;
67+ let self_address = module. self_id ( ) . address ( ) . clone ( ) ;
68+ let target_module = module. address_identifiers ( ) . get ( called_function_handle. module . 0 as usize )
69+ . unwrap_or_else ( || & self_address) ;
6870 println ! (
6971 " Calls: {} from module: {:x} to module: {:x}" ,
7072 called_function_name, source_module, target_module
@@ -76,7 +78,9 @@ impl<'a> CallEdgeDetector<'a> {
7678 let called_function_name = module. identifier_at ( called_function_handle. name ) ;
7779 let module_id = module. self_id ( ) ;
7880 let source_module = module_id. address ( ) ;
79- let target_module = module. address_identifiers ( ) [ called_function_handle. module . 0 as usize ] ;
81+ let self_address = module. self_id ( ) . address ( ) . clone ( ) ;
82+ let target_module = module. address_identifiers ( ) . get ( called_function_handle. module . 0 as usize )
83+ . unwrap_or_else ( || & self_address) ;
8084 println ! (
8185 " Calls: {} from module: {:x} to module: {:x}" ,
8286 called_function_name, source_module, target_module
@@ -96,7 +100,6 @@ impl<'a> CallEdgeDetector<'a> {
96100 }
97101 }
98102 }
99- //TODO return edge, where is the after the function call finish
100103 //TODO how to add gas metering for distinguishing cross container and in container function call?
101104 //TODO how the gas should be calculated for cross container function call?
102105}
0 commit comments