diff --git a/src/plugins/qmlprofiler/memoryusagemodel.cpp b/src/plugins/qmlprofiler/memoryusagemodel.cpp index 2e8876fcbaf..9fcaaa4cb38 100644 --- a/src/plugins/qmlprofiler/memoryusagemodel.cpp +++ b/src/plugins/qmlprofiler/memoryusagemodel.cpp @@ -97,6 +97,15 @@ QVariantList MemoryUsageModel::labels() const return result; } +static int toSameSignedInt(qint64 number) +{ + if (number > std::numeric_limits::max()) + return std::numeric_limits::max(); + if (number < std::numeric_limits::min()) + return std::numeric_limits::min(); + return static_cast(number); +} + QVariantMap MemoryUsageModel::details(int index) const { QVariantMap result; @@ -107,14 +116,17 @@ QVariantMap MemoryUsageModel::details(int index) const else result.insert(QLatin1String("displayName"), tr("Memory Freed")); - result.insert(tr("Total"), tr("%n byte(s)", nullptr, ev->size)); + result.insert(tr("Total"), tr("%1 byte(s)", nullptr, toSameSignedInt(ev->size)).arg(ev->size)); if (ev->allocations > 0) { - result.insert(tr("Allocated"), tr("%1 bytes").arg(ev->allocated)); - result.insert(tr("Allocations"), QString::number(ev->allocations)); + result.insert(tr("Allocated"), tr("%1 byte(s)", nullptr, toSameSignedInt(ev->allocated)) + .arg(ev->allocated)); + result.insert(tr("Allocations"), ev->allocations); } if (ev->deallocations > 0) { - result.insert(tr("Deallocated"), tr("%1 bytes").arg(-ev->deallocated)); - result.insert(tr("Deallocations"), QString::number(ev->deallocations)); + result.insert(tr("Deallocated"), + tr("%1 byte(s)", nullptr, toSameSignedInt(-ev->deallocated)) + .arg(-ev->deallocated)); + result.insert(tr("Deallocations"), ev->deallocations); } QString memoryTypeName; switch (selectionId(index)) { diff --git a/src/plugins/qmlprofiler/tests/memoryusagemodel_test.cpp b/src/plugins/qmlprofiler/tests/memoryusagemodel_test.cpp index 2f9d0bd5664..49c23cfb08b 100644 --- a/src/plugins/qmlprofiler/tests/memoryusagemodel_test.cpp +++ b/src/plugins/qmlprofiler/tests/memoryusagemodel_test.cpp @@ -149,8 +149,10 @@ void MemoryUsageModelTest::testDetails() { const QVariantMap allocated = model.details(0); QCOMPARE(allocated[QString("displayName")].toString(), model.tr("Memory Allocated")); - QCOMPARE(allocated[model.tr("Total")].toString(), model.tr("%1 bytes").arg(4096)); - QCOMPARE(allocated[model.tr("Allocated")].toString(), model.tr("%1 bytes").arg(4096)); + QCOMPARE(allocated[model.tr("Total")].toString(), + model.tr("%1 byte(s)", nullptr, 4096).arg(4096)); + QCOMPARE(allocated[model.tr("Allocated")].toString(), + model.tr("%1 byte(s)", nullptr, 4096).arg(4096)); QCOMPARE(allocated[model.tr("Allocations")].toString(), QString::number(2)); QCOMPARE(allocated[model.tr("Type")].toString(), model.tr("Heap Allocation")); QCOMPARE(allocated[model.tr("Location")].toString(), QmlProfilerModelManager::tr("")); @@ -160,8 +162,10 @@ void MemoryUsageModelTest::testDetails() const QVariantMap large = model.details(2); QCOMPARE(large[QString("displayName")].toString(), model.tr("Memory Allocated")); - QCOMPARE(large[model.tr("Total")].toString(), model.tr("%1 bytes").arg(5120)); - QCOMPARE(large[model.tr("Allocated")].toString(), model.tr("%1 bytes").arg(1024)); + QCOMPARE(large[model.tr("Total")].toString(), + model.tr("%1 byte(s)", nullptr, 5120).arg(5120)); + QCOMPARE(large[model.tr("Allocated")].toString(), + model.tr("%1 byte(s)", nullptr, 1024).arg(1024)); QCOMPARE(large[model.tr("Allocations")].toString(), QString::number(1)); QCOMPARE(large[model.tr("Type")].toString(), model.tr("Large Item Allocation")); QCOMPARE(large[model.tr("Location")].toString(), QmlProfilerModelManager::tr("")); @@ -171,8 +175,10 @@ void MemoryUsageModelTest::testDetails() const QVariantMap freed = model.details(9); QCOMPARE(freed[QString("displayName")].toString(), model.tr("Memory Freed")); - QCOMPARE(freed[model.tr("Total")].toString(), model.tr("%1 bytes").arg(2048)); - QCOMPARE(freed[model.tr("Deallocated")].toString(), model.tr("%1 bytes").arg(1024)); + QCOMPARE(freed[model.tr("Total")].toString(), + model.tr("%1 byte(s)", nullptr, 2048).arg(2048)); + QCOMPARE(freed[model.tr("Deallocated")].toString(), + model.tr("%1 byte(s)", nullptr, 1024).arg(1024)); QCOMPARE(freed[model.tr("Deallocations")].toString(), QString::number(1)); QCOMPARE(freed[model.tr("Type")].toString(), model.tr("Heap Usage")); QCOMPARE(freed[model.tr("Location")].toString(), QmlProfilerModelManager::tr(""));