summaryrefslogtreecommitdiff
path: root/components/dfs/src
diff options
context:
space:
mode:
authorbernard <[email protected]>2014-08-01 12:03:24 +0800
committerbernard <[email protected]>2014-08-01 12:03:24 +0800
commit582aff86ed91dad23e8ace36f8466ca20c80bebf (patch)
tree77b4338a8afe48a1c45be9f4bab9b40de1543c5b /components/dfs/src
parent516711dc1d08ed332704ec53fd377edbdd0b9834 (diff)
parent2fdef817b1a0ce82ef61bde11f41e651c1cc8d79 (diff)
Merge branch 'master' of https://github.com/RT-Thread/rt-threadv2.0.0_beta
Diffstat (limited to 'components/dfs/src')
-rw-r--r--components/dfs/src/dfs_posix.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/components/dfs/src/dfs_posix.c b/components/dfs/src/dfs_posix.c
index f516eccd93..c1a6a5beb6 100644
--- a/components/dfs/src/dfs_posix.c
+++ b/components/dfs/src/dfs_posix.c
@@ -540,12 +540,17 @@ struct dirent *readdir(DIR *d)
if (fd == RT_NULL)
{
rt_set_errno(-DFS_STATUS_EBADF);
-
return RT_NULL;
}
- if (!d->num ||
- (d->cur += ((struct dirent *)(d->buf + d->cur))->d_reclen) >= d->num)
+ if (d->num)
+ {
+ struct dirent* dirent_ptr;
+ dirent_ptr = (struct dirent*)&d->buf[d->cur];
+ d->cur += dirent_ptr->d_reclen;
+ }
+
+ if (!d->num || d->cur >= d->num)
{
/* get a new entry */
result = dfs_file_getdents(fd,