File tree Expand file tree Collapse file tree 2 files changed +17
-6
lines changed
Expand file tree Collapse file tree 2 files changed +17
-6
lines changed Original file line number Diff line number Diff line change @@ -300,7 +300,15 @@ fn make(args: MakeArgs) -> Result<()> {
300300 }
301301
302302 // Load all modules
303- let mut files = paths. iter ( ) . map ( |p| open_file ( p, true ) ) . collect :: < Result < Vec < _ > > > ( ) ?;
303+ let mut files = paths
304+ . iter ( )
305+ . map ( |p| {
306+ let mut file = open_file ( p, true ) ?;
307+ // Immediately map to avoid keeping file handles open
308+ file. map ( ) ?;
309+ Ok ( file)
310+ } )
311+ . collect :: < Result < Vec < _ > > > ( ) ?;
304312 let modules = files
305313 . par_iter_mut ( )
306314 . enumerate ( )
Original file line number Diff line number Diff line change @@ -86,14 +86,17 @@ impl Seek for StdFile {
8686
8787impl VfsFile for StdFile {
8888 fn map ( & mut self ) -> io:: Result < & [ u8 ] > {
89- let file = match self . file {
90- Some ( ref mut file) => file,
91- None => self . file . insert ( BufReader :: new ( fs:: File :: open ( & self . path ) ?) ) ,
92- } ;
9389 let mmap = match self . mmap {
9490 Some ( ref mmap) => mmap,
95- None => self . mmap . insert ( unsafe { memmap2:: Mmap :: map ( file. get_ref ( ) ) ? } ) ,
91+ None => {
92+ let file = match self . file {
93+ Some ( ref mut file) => file,
94+ None => self . file . insert ( BufReader :: new ( fs:: File :: open ( & self . path ) ?) ) ,
95+ } ;
96+ self . mmap . insert ( unsafe { memmap2:: Mmap :: map ( file. get_ref ( ) ) ? } )
97+ }
9698 } ;
99+ self . file = None ; // Drop the BufReader to avoid holding the file handle
97100 Ok ( mmap)
98101 }
99102
You can’t perform that action at this time.
0 commit comments