打印
[ZLG-ARM]

关于ZLGFS中的一个BUG

[复制链接]
1645|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qiqiang|  楼主 | 2008-5-26 18:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
BUG, lg, AN, ui, TE
在使用ZLG/FS时,在其中的读文件函数中(位于File.c文件中),代码如下:
/***************************
** 函数名称: FileRead
** 功能描述: 读取文件
** 输 入: Buf:保存读回的数据
**        Size:要读的字节数
**        Handle:文件句柄
** 输 出: 实际读到的字节数
** 全局变量: 无
** 调用模块: 无
** 作 者: 陈明计
** 日 期: 2003年6月5日
*****************/
  uint32 FileRead(void *Buf, uint32 Size, HANDLE Handle)
{
    uint8 *temp;
    uint32 i;
    temp = (uint8 *)Buf;
    for (i = 0; i < Size; i++)
    {
        if (FileGetCh(temp, Handle) != RETURN_OK)
        {
            break;
        }

        // 读到文件的尾部时,应该自动退出
        //  add by qq
        if (FileInfo[Handle].Offset == FileInfo[Handle].FileSize)
        {
           i++;    // 读到的数据个数加一
           break;
        }
        
        temp++;
    }
    return i;
}

原来的代码在读数据时,并没有判断如果本次读取的数据个数已经超过了文件的大小,因此当读到文件尾部时,文件的大小突然会变化,具体代码没有仔细跟踪下去了,再后面利用FileEof判断文件的结尾就无法正确判断。因此在读文件期间,应该加入判断,避免到了文件的尾部,还在读取。

我使用的是老的ZLG/FS,在LPC213X光盘的附带的,不知最新的版本是否已经修改了。在这里提出来,希望使用者引起重视



相关帖子

沙发
zlgarm| | 2008-5-29 12:51 | 只看该作者

楼主您好

楼主您好:
   FileGetCh()中进行了相应的判断。
by:lrk

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

43

帖子

2

粉丝