diff options
| author | bernard <[email protected]> | 2014-08-01 12:03:24 +0800 |
|---|---|---|
| committer | bernard <[email protected]> | 2014-08-01 12:03:24 +0800 |
| commit | 582aff86ed91dad23e8ace36f8466ca20c80bebf (patch) | |
| tree | 77b4338a8afe48a1c45be9f4bab9b40de1543c5b /components/dfs/src | |
| parent | 516711dc1d08ed332704ec53fd377edbdd0b9834 (diff) | |
| parent | 2fdef817b1a0ce82ef61bde11f41e651c1cc8d79 (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.c | 11 |
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, |
