From 950bf237621570b0ec700f0b05b034e23cdfde18 Mon Sep 17 00:00:00 2001 From: Hu Feng Date: Fri, 19 Mar 2021 02:57:38 +0000 Subject: [PATCH] fix access null pointer TODO: fix access null pointer Forwarded: not-needed Reviewed-By: Boyuan Yang Last-Update: 2021-03-02 Gbp-Pq: Name 0001-fix-access-null-pointer.patch --- src/dsysinfo.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/dsysinfo.cpp b/src/dsysinfo.cpp index a364f4c..e387111 100644 --- a/src/dsysinfo.cpp +++ b/src/dsysinfo.cpp @@ -48,6 +48,7 @@ public: #ifdef Q_OS_LINUX void ensureDeepinInfo(); bool ensureOsVersion(); + void ensureDistributionInfo(); #endif void ensureReleaseInfo(); void ensureComputerInfo(); @@ -97,6 +98,16 @@ DSysInfoPrivate::DSysInfoPrivate() } #ifdef Q_OS_LINUX +void DSysInfoPrivate::ensureDistributionInfo() +{ + if (distributionInfo) + return; + + const QString distributionInfoFile(DSysInfo::distributionInfoPath()); + // Generic DDE distribution info + distributionInfo.reset(new DDesktopEntry(distributionInfoFile)); +} + void DSysInfoPrivate::ensureDeepinInfo() { if (static_cast(deepinType) >= 0) @@ -168,11 +179,6 @@ void DSysInfoPrivate::ensureDeepinInfo() } else { deepinType = DSysInfo::UnknownDeepin; } - - const QString distributionInfoFile(DSysInfo::distributionInfoPath()); - // Generic DDE distribution info - distributionInfo.reset(new DDesktopEntry(distributionInfoFile)); - QSettings distributionInfo(distributionInfoFile, QSettings::IniFormat); // TODO: treat as `.desktop` format instead of `.ini` } bool DSysInfoPrivate::ensureOsVersion() @@ -734,7 +740,7 @@ QString DSysInfo::distributionInfoSectionName(DSysInfo::OrgType type) QString DSysInfo::distributionOrgName(DSysInfo::OrgType type, const QLocale &locale) { #ifdef Q_OS_LINUX - siGlobal->ensureDeepinInfo(); + siGlobal->ensureDistributionInfo(); #endif QString fallback = type == Distribution ? QStringLiteral("Deepin") : QString(); @@ -757,7 +763,7 @@ QString DSysInfo::deepinDistributorName() QPair DSysInfo::distributionOrgWebsite(DSysInfo::OrgType type) { #ifdef Q_OS_LINUX - siGlobal->ensureDeepinInfo(); + siGlobal->ensureDistributionInfo(); #endif QString fallbackSiteName = type == Distribution ? QStringLiteral("www.deepin.org") : QString(); -- 2.30.2