diff options
author | Antti Määttä <antti.maatta@qt.io> | 2023-05-29 09:12:46 +0300 |
---|---|---|
committer | Antti Määttä <antti.maatta@qt.io> | 2023-06-02 17:53:25 +0300 |
commit | dad95f4a43af97b216ee33aa384ab98963cbdba0 (patch) | |
tree | 303ce5bb86b37c8d5129cd76ceb20d128d09599f | |
parent | 5e2b4c401d19f2067a9ce799883113f59cb66607 (diff) |
CTF: Use QT_FSTAT to read file size
Pick-to: 6.5
Change-Id: Ic4b184e1ed51d8e30c2305a5ead619117a505518
Reviewed-by: Janne Koskinen <janne.p.koskinen@qt.io>
Reviewed-by: Antti Määttä <antti.maatta@qt.io>
-rw-r--r-- | src/plugins/tracing/qctflib.cpp | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/plugins/tracing/qctflib.cpp b/src/plugins/tracing/qctflib.cpp index 9311bb1fdd..caa868ff64 100644 --- a/src/plugins/tracing/qctflib.cpp +++ b/src/plugins/tracing/qctflib.cpp @@ -75,13 +75,16 @@ QCtfLibImpl::QCtfLibImpl() m_session.tracepoints.append(QStringLiteral("all")); m_session.name = QStringLiteral("default"); } else { - fseek(file, 0, SEEK_END); - qsizetype pos = ftell(file); - fseek(file, 0, SEEK_SET); - QByteArray data(pos, Qt::Uninitialized); - qsizetype size = (qsizetype)fread(data.data(), 1, pos, file); + QT_STATBUF stat; + if (QT_FSTAT(QT_FILENO(file), &stat) != 0) { + qCWarning (lcDebugTrace) << "Unable to stat session file, " << qt_error_string(); + return; + } + qsizetype filesize = qMin(stat.st_size, std::numeric_limits<qsizetype>::max()); + QByteArray data(filesize, Qt::Uninitialized); + qsizetype size = static_cast<qsizetype>(fread(data.data(), 1, filesize, file)); fclose(file); - if (size != pos) + if (size != filesize) return; QJsonDocument json(QJsonDocument::fromJson(data)); |