diff options
author | ikause <qt-info@nokia.com> | 2009-06-05 13:23:01 (GMT) |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@digia.com> | 2009-06-08 07:00:02 (GMT) |
commit | 768cab51239a45f00d5ee3857efecd3d2cdcb99b (patch) | |
tree | 115c23175bd8547457c4e0b44d20aa7dfb7f1e63 /src/corelib/plugin | |
parent | 7087433fb6f77746678963b1a97fc18daab831fa (diff) | |
download | Qt-768cab51239a45f00d5ee3857efecd3d2cdcb99b.zip Qt-768cab51239a45f00d5ee3857efecd3d2cdcb99b.tar.gz Qt-768cab51239a45f00d5ee3857efecd3d2cdcb99b.tar.bz2 |
Bug fix for 251870
A correction to this defect:
251870 QPluginLoader will only look for stubs from single drive,
though plugins themselves can be located on any drive.
Now the implementation goes through all the available drives
if given path does not find corresponding stub-file in
QPluginLoader::setFileName(). Since this is Symbian specific
functionality, all the changes are behind Q_OS_SYMBIAN-flags.
Note: Updated tests now need memory card being installed
to device under test. Otherwise the test will be skipped.
In case needed, drive is easy to change to tests.
D-drive could also be a good option.
modified: src/corelib/plugin/qpluginloader.cpp
modified: tests/auto/qpluginloader/tst_qpluginloader.cpp
Reviewed-By: Miikka Heikkinen
Diffstat (limited to 'src/corelib/plugin')
-rw-r--r-- | src/corelib/plugin/qpluginloader.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp index a911f1d..8d1c0f7 100644 --- a/src/corelib/plugin/qpluginloader.cpp +++ b/src/corelib/plugin/qpluginloader.cpp @@ -46,6 +46,7 @@ #include <qfileinfo.h> #include "qlibrary_p.h" #include "qdebug.h" +#include "qdir.h" #ifndef QT_NO_LIBRARY @@ -301,6 +302,24 @@ void QPluginLoader::setFileName(const QString &fileName) } QString fn = fi.canonicalFilePath(); + // If not found directly, check also all the available drives + if (!fn.length()) { + QString stubPath(fi.fileName().length() ? fi.absoluteFilePath() : QString()); + if (stubPath.length() > 1) { + if (stubPath.at(1).toAscii() == ':') + stubPath.remove(0,2); + QFileInfoList driveList(QDir::drives()); + foreach(const QFileInfo& drive, driveList) { + QString testFilePath(drive.absolutePath() + stubPath); + testFilePath = QDir::cleanPath(testFilePath); + if (QFile::exists(testFilePath)) { + fn = testFilePath; + break; + } + } + } + } + #else QString fn = QFileInfo(fileName).canonicalFilePath(); #endif |