@@ -370,7 +370,7 @@ where
370
370
}
371
371
372
372
// Check it's not already open
373
- if self . file_is_open ( volume, dir_entry. cluster ) {
373
+ if self . file_is_open ( volume, & dir_entry) {
374
374
return Err ( Error :: FileAlreadyOpen ) ;
375
375
}
376
376
@@ -488,7 +488,7 @@ where
488
488
489
489
// Check if it's open already
490
490
if let Some ( dir_entry) = & dir_entry {
491
- if self . file_is_open ( volume_info. volume_id , dir_entry. cluster ) {
491
+ if self . file_is_open ( volume_info. volume_id , & dir_entry) {
492
492
return Err ( Error :: FileAlreadyOpen ) ;
493
493
}
494
494
}
@@ -562,7 +562,7 @@ where
562
562
return Err ( Error :: DeleteDirAsFile ) ;
563
563
}
564
564
565
- if self . file_is_open ( dir_info. volume_id , dir_entry. cluster ) {
565
+ if self . file_is_open ( dir_info. volume_id , & dir_entry) {
566
566
return Err ( Error :: FileAlreadyOpen ) ;
567
567
}
568
568
@@ -579,9 +579,12 @@ where
579
579
/// Check if a file is open
580
580
///
581
581
/// Returns `true` if it's open, `false`, otherwise.
582
- fn file_is_open ( & self , volume : Volume , starting_cluster : ClusterId ) -> bool {
582
+ fn file_is_open ( & self , volume : Volume , dir_entry : & DirEntry ) -> bool {
583
583
for f in self . open_files . iter ( ) {
584
- if f. volume_id == volume && f. entry . cluster == starting_cluster {
584
+ if f. volume_id == volume
585
+ && f. entry . entry_block == dir_entry. entry_block
586
+ && f. entry . entry_offset == dir_entry. entry_offset
587
+ {
585
588
return true ;
586
589
}
587
590
}
0 commit comments