[ZLG-ARM] 关于ZLGFS中的一个BUG

[复制链接]
2386|1
 楼主| qiqiang 发表于 2008-5-26 18:30 | 显示全部楼层 |阅读模式
BUG, lg, AN, ui, TE
在使用ZLG/FS时,在其中的读文件函数中(位于File.c文件中),代码如下:<br />/***************************<br />**&nbsp;函数名称:&nbsp;FileRead<br />**&nbsp;功能描述:&nbsp;读取文件<br />**&nbsp;输 入:&nbsp;Buf:保存读回的数据<br />**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Size:要读的字节数<br />**&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Handle:文件句柄<br />**&nbsp;输 出:&nbsp;实际读到的字节数<br />**&nbsp;全局变量:&nbsp;无<br />**&nbsp;调用模块:&nbsp;无<br />**&nbsp;作 者:&nbsp;陈明计<br />**&nbsp;日 期:&nbsp;2003年6月5日<br />*****************/<br />&nbsp;&nbsp;uint32&nbsp;FileRead(void&nbsp;*Buf,&nbsp;uint32&nbsp;Size,&nbsp;HANDLE&nbsp;Handle)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uint8&nbsp;*temp;<br />&nbsp;&nbsp;&nbsp;&nbsp;uint32&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;temp&nbsp;=&nbsp;(uint8&nbsp;*)Buf;<br />&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt&nbsp;Size;&nbsp;i++)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(FileGetCh(temp,&nbsp;Handle)&nbsp;!=&nbsp;RETURN_OK)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读到文件的尾部时,应该自动退出<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;add&nbsp;by&nbsp;qq<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(FileInfo[Handle].Offset&nbsp;==&nbsp;FileInfo[Handle].FileSize)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i++;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;读到的数据个数加一<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;temp++;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;i;<br />}<br /><br />原来的代码在读数据时,并没有判断如果本次读取的数据个数已经超过了文件的大小,因此当读到文件尾部时,文件的大小突然会变化,具体代码没有仔细跟踪下去了,再后面利用FileEof判断文件的结尾就无法正确判断。因此在读文件期间,应该加入判断,避免到了文件的尾部,还在读取。<br /><br />我使用的是老的ZLG/FS,在LPC213X光盘的附带的,不知最新的版本是否已经修改了。在这里提出来,希望使用者引起重视<br /><br /><br /><br />
zlgarm 发表于 2008-5-29 12:51 | 显示全部楼层

楼主您好

楼主您好:<br />&nbsp;&nbsp;&nbsp;FileGetCh()中进行了相应的判断。<br />by:lrk
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

43

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部