diff --git a/src/dfm-io/dfm-io/denumerator.cpp b/src/dfm-io/dfm-io/denumerator.cpp index 78aa1210..8546b8fd 100644 --- a/src/dfm-io/dfm-io/denumerator.cpp +++ b/src/dfm-io/dfm-io/denumerator.cpp @@ -236,7 +236,11 @@ bool DEnumeratorPrivate::checkFilter() bool DEnumeratorPrivate::openDirByfts() { char *paths[2] = { nullptr, nullptr }; - paths[0] = strdup(filePath(uri)); + paths[0] = strdup(filePath(uri).constData()); + if (!paths[0]) { + error.setCode(DFMIOErrorCode::DFM_IO_ERROR_FAILED); + return false; + } int (*compare)(const FTSENT **, const FTSENT **); compare = nullptr; if (sortRoleFlag == DEnumerator::SortRoleCompareFlag::kSortRoleCompareFileName) { @@ -364,15 +368,15 @@ void DEnumeratorPrivate::setQueryAttributes(const QString &attributes) queryAttributes = attributes; } -char *DEnumeratorPrivate::filePath(const QUrl &url) +QByteArray DEnumeratorPrivate::filePath(const QUrl &url) { if (url.userInfo().startsWith("originPath::")) - return url.userInfo().replace("originPath::", "").toLatin1().data(); + return url.userInfo().replace("originPath::", "").toLatin1(); QString path = url.path(); if (path != "/" && path.endsWith("/")) path = path.left(path.length() - 1); - return path.toUtf8().data(); + return path.toUtf8(); } QUrl DEnumeratorPrivate::buildUrl(const QUrl &url, const char *fileName) @@ -776,7 +780,8 @@ QList> DEnumerator::sortFileInfoList() QSet hideList; QUrl urlHidden = d->buildUrl(d->uri, ".hidden"); hideList = DLocalHelper::hideListFromUrl(urlHidden); - const char *dirPath = d->filePath(d->uri); + QByteArray dirPathBa = d->filePath(d->uri); + const char *dirPath = dirPathBa.constData(); while (1) { FTSENT *ent = fts_read(d->fts); diff --git a/src/dfm-io/dfm-io/private/denumerator_p.h b/src/dfm-io/dfm-io/private/denumerator_p.h index 9e032c53..71007e74 100644 --- a/src/dfm-io/dfm-io/private/denumerator_p.h +++ b/src/dfm-io/dfm-io/private/denumerator_p.h @@ -55,7 +55,7 @@ class DEnumeratorPrivate : public QObject, public QEnableSharedFromThis> fileInfoList(); void setQueryAttributes(const QString &attributes); - char *filePath(const QUrl &url); + QByteArray filePath(const QUrl &url); QUrl buildUrl(const QUrl &url, const char *fileName); static void enumUriAsyncCallBack(GObject *sourceObject, diff --git a/src/dfm-io/tools/dfm-list.cpp b/src/dfm-io/tools/dfm-list.cpp index c040f5ab..1cb900e4 100644 --- a/src/dfm-io/tools/dfm-list.cpp +++ b/src/dfm-io/tools/dfm-list.cpp @@ -6,8 +6,6 @@ #include #include -#include - #include #include #include