Details
-
Bug
-
Resolution: Invalid
-
Not Evaluated
-
None
-
5.5.1, 5.9.9
-
None
-
unix
Description
在linux系统下,QFile::exists() / QDir::exists() / QFile::open() / QDir::rmdir() 等函数均存在同样的问题,若文件路径含有"..",当子文件不存在,其上一层目录也被判定为不存在,比如"local/../bin",若"bin"不存在,"local"被判定为不存在/不能被打开/不能被删除。
在windows系统下,这样传递参数是没有问题的。二者区别是在
QFileSystemEntry::resolveNativeFilePath()函数中,windows下会走
QFSFileEnginePrivate::longFileName --》 GetFullPathName,将含有../的路径正确处理了。而linux系统下,什么也没有做。
个人理解,应该在这个函数中,将包含".."的路径使用QDir::cleanPath处理下。