发现rt-thread的dfs子系统代码中的一点"bug"
本帖最后由 s200661524 于 2013-2-7 18:44 编辑研究rt的虚拟文件系统比较长时间,感觉精悍小巧而功能强大。在dfs系统中dfs_file.c文件
函数int dfs_file_rename(const char *oldpath, const char *newpath)
........
........
oldfullpath = dfs_normalize_path(RT_NULL, oldpath);
if (oldfullpath == RT_NULL)
{
result = -DFS_STATUS_ENOENT;
goto __exit;
}
newfullpath = dfs_normalize_path(RT_NULL, newpath);
if (newfullpath == RT_NULL)
{
result = -DFS_STATUS_ENOENT;
goto __exit;
}
.......
.......
__exit:
rt_free(oldfullpath);
rt_free(newfullpath);
/* not at same file system, return EXDEV */
return result;
...................................................................................................
dfs_normalize_path返回空的时,在rt_free里面会产生警告。
不知道这是不是一个小bug?个人感觉如果改成以下会好点
........
........
oldfullpath = dfs_normalize_path(RT_NULL, oldpath);
if (oldfullpath == RT_NULL)
{
result = -DFS_STATUS_ENOENT;
goto __exit2;
}
newfullpath = dfs_normalize_path(RT_NULL, newpath);
if (newfullpath == RT_NULL)
{
result = -DFS_STATUS_ENOENT;
goto __exit1;
}
.......
.......
rt_free(newfullpath);
__exit1:
rt_free(oldfullpath);
__exit2:
/* not at same file system, return EXDEV */
return result;
不知道分析得对不对。
页:
[1]