QFileInfoGatherer: Fix internal build (with Q_AUTOTEST_EXPORT)
I'm surprised that this passed the CI on Windows, because Q_AUTOTEST_EXPORT is Q_DECL_EXPORT, which is __declspec(dllexport) and all dllexport'ed functions must be defined in the current DLL, not imported from elsewhere. This is similar on Unix systems with the no_direct_extern_access mode, because then Q_DECL_EXPORT behaves like on Windows. That means Qt modules can't call a Q_AUTOTEST_EXPORT function from another module (only tests can). Solve this by providing a function that is properly exported with Q_CORE_EXPORT. Amends commit 3d08816f4c4245f08a53307775fe3c4ed31a7a32. Task-number: QTBUG-28246 Task-number: QTBUG-31103 Change-Id: I2ba317ab34bda8c18954fffd28395f7354cb54f2 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io> (cherry picked from commit fbe61def33a2708e35e5e6a796e88976b04941f7) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
333a4ca7dd
commit
ea4c74ccaf
@ -143,6 +143,12 @@ static bool _q_createLegacyEngine_recursive(QFileSystemEntry &entry, QFileSystem
|
||||
return _q_checkEntry(entry, data, resolvingEntry);
|
||||
}
|
||||
|
||||
Q_CORE_EXPORT bool qt_isCaseSensitive(const QFileSystemEntry &entry, QFileSystemMetaData &data)
|
||||
{
|
||||
// called from QtGui (QFileSystemModel, QFileInfoGatherer)
|
||||
return QFileSystemEngine::isCaseSensitive(entry, data);
|
||||
}
|
||||
|
||||
/*!
|
||||
\internal
|
||||
|
||||
|
@ -55,12 +55,11 @@ inline bool qIsFilenameBroken(const QFileSystemEntry &entry)
|
||||
Q_RETURN_ON_INVALID_FILENAME("Broken filename passed to function", (result)); \
|
||||
} while (false)
|
||||
|
||||
Q_CORE_EXPORT bool qt_isCaseSensitive(const QFileSystemEntry &entry, QFileSystemMetaData &data);
|
||||
|
||||
class Q_AUTOTEST_EXPORT QFileSystemEngine
|
||||
{
|
||||
public:
|
||||
#ifndef QT_BUILD_INTERNAL
|
||||
Q_CORE_EXPORT
|
||||
#endif
|
||||
static bool isCaseSensitive(const QFileSystemEntry &entry, QFileSystemMetaData &data);
|
||||
|
||||
static QFileSystemEntry getLinkTarget(const QFileSystemEntry &link, QFileSystemMetaData &data);
|
||||
|
@ -59,7 +59,7 @@ public:
|
||||
#ifndef QT_NO_FSFILEENGINE
|
||||
bool isCaseSensitive() const {
|
||||
auto *fiPriv = QFileInfoPrivate::get(const_cast<QFileInfo*>(&mFileInfo));
|
||||
return QFileSystemEngine::isCaseSensitive(fiPriv->fileEntry, fiPriv->metaData);
|
||||
return qt_isCaseSensitive(fiPriv->fileEntry, fiPriv->metaData);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1055,7 +1055,7 @@ void tst_QFileSystemModel::caseSensitivity()
|
||||
|
||||
QFileInfo tmpInfo(tmp);
|
||||
auto *tmpInfoPriv = QFileInfoPrivate::get(&tmpInfo);
|
||||
if (!QFileSystemEngine::isCaseSensitive(tmpInfoPriv->fileEntry, tmpInfoPriv->metaData)) {
|
||||
if (!qt_isCaseSensitive(tmpInfoPriv->fileEntry, tmpInfoPriv->metaData)) {
|
||||
// Verify that files can be accessed by paths with fLipPeD case.
|
||||
for (int i = 0; i < paths.size(); ++i) {
|
||||
const QModelIndex normalCaseIndex = indexes.at(i);
|
||||
|
Loading…
x
Reference in New Issue
Block a user