Skip to content
GitLab
Explore
Projects
Groups
Topics
Snippets
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
hit-xby
OSKernel2024-yeah
Commits
9150faf4
Commit
9150faf4
authored
6 months ago
by
只敲代码不玩耍,聪明baka也变傻ᗜˬᗜ
Browse files
Options
Download
Patches
Plain Diff
fix: improve read behavior in FatFileInode to handle EOF correctly
parent
b28d8421
master
feat/docs
feat/docs-vendored
feat/ext4-filesystem
feat/ext4-filesystem-vendored
feat/test-final
feat/test-final-vendored
master-vendored
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
crates/filesystem/src/fatfs_impl.rs
+21
-12
crates/filesystem/src/fatfs_impl.rs
with
21 additions
and
12 deletions
+21
-12
crates/filesystem/src/fatfs_impl.rs
+
21
−
12
View file @
9150faf4
...
...
@@ -223,24 +223,33 @@ impl IInode for FatFileInode {
buffer
:
&
mut
[
u8
],
)
->
filesystem_abstractions
::
FileSystemResult
<
usize
>
{
let
mut
locked_inner
=
self
.inner
.lock
();
if
offset
>=
locked_inner
.size
{
return
Ok
(
0
);
}
let
file_size
=
locked_inner
.size
;
let
pos
=
SeekFrom
::
Start
(
offset
as
u64
)
;
let
mut
bytes_read
=
0
;
locked_inner
.inner
.seek
(
pos
)
.map_err
(
from_fatfs_error
)
?
;
if
offset
<
file_size
{
let
pos
=
SeekFrom
::
Start
(
offset
as
u64
);
let
len
=
locked_inner
.s
ize
as
u64
;
locked_inner
.
inner
.
s
eek
(
pos
)
.map_err
(
from_fatfs_error
)
?
;
let
rlen
=
Ord
::
min
(
buffer
.len
(),
len
as
u
size
-
offset
);
let
rlen
=
Ord
::
min
(
buffer
.len
(),
file_
size
-
offset
);
locked_inner
.inner
.read_exact
(
&
mut
buffer
[
..
rlen
])
.map_err
(
from_fatfs_error
)
?
;
locked_inner
.inner
.read_exact
(
&
mut
buffer
[
..
rlen
])
.map_err
(
from_fatfs_error
)
?
;
bytes_read
=
rlen
;
}
// Add EOF if reached the end
if
buffer
.len
()
>
file_size
-
offset
{
const
EOF
:
u8
=
0
;
buffer
[
file_size
-
offset
]
=
EOF
;
bytes_read
+=
1
;
}
Ok
(
rlen
)
Ok
(
bytes_read
)
}
fn
writeat
(
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment
Menu
Explore
Projects
Groups
Topics
Snippets