From e040266967ac193c50cd7855491e5ec642226ded Mon Sep 17 00:00:00 2001 From: "goprife@gmail.com" Date: Sun, 1 Jul 2012 10:36:47 +0000 Subject: [PATCH] fix bug in f_seekdir in elm fatfs, with the patch provided by rogerz.zhang@gmail.com git-svn-id: https://rt-thread.googlecode.com/svn/trunk@2198 bbd45198-f89e-11dd-88c7-29a3b14d5316 --- components/dfs/filesystems/elmfat/ff.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/components/dfs/filesystems/elmfat/ff.c b/components/dfs/filesystems/elmfat/ff.c index 1896bf2051..f6b85c30c8 100644 --- a/components/dfs/filesystems/elmfat/ff.c +++ b/components/dfs/filesystems/elmfat/ff.c @@ -3033,10 +3033,22 @@ FRESULT f_seekdir( int offset /* the seek offset */ ) { - return dir_sdi(dj, offset); /* seek directory index to offset */ + int i = 0; + + if (dir_sdi(dj, 0) != FR_OK || offset < 0) + return FR_INT_ERR; + + while(i < offset) + { + if(dir_read(dj) != FR_OK || dir_next(dj, 0) != FR_OK) + return FR_INT_ERR; + i++; + } + return FR_OK; } + #if _FS_MINIMIZE == 0 /*-----------------------------------------------------------------------*/ /* Get File Status */