@@ -370,7 +370,7 @@ where
370370 }
371371
372372 // 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) {
374374 return Err ( Error :: FileAlreadyOpen ) ;
375375 }
376376
@@ -488,7 +488,7 @@ where
488488
489489 // Check if it's open already
490490 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) {
492492 return Err ( Error :: FileAlreadyOpen ) ;
493493 }
494494 }
@@ -562,7 +562,7 @@ where
562562 return Err ( Error :: DeleteDirAsFile ) ;
563563 }
564564
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) {
566566 return Err ( Error :: FileAlreadyOpen ) ;
567567 }
568568
@@ -579,9 +579,12 @@ where
579579 /// Check if a file is open
580580 ///
581581 /// 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 {
583583 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+ {
585588 return true ;
586589 }
587590 }
0 commit comments