fix access null pointer
authorHu Feng <hufeng@uniontech.com>
Fri, 19 Mar 2021 02:57:38 +0000 (02:57 +0000)
committerBoyuan Yang <byang@debian.org>
Fri, 19 Mar 2021 02:57:38 +0000 (02:57 +0000)
TODO: fix access null pointer
Forwarded: not-needed
Reviewed-By: Boyuan Yang <byang@debian.org>
Last-Update: 2021-03-02

Gbp-Pq: Name 0001-fix-access-null-pointer.patch

src/dsysinfo.cpp

index a364f4ca520a3841841784528bb64a46aaff9fda..e3871112e6d62ed52ef791da75c85d23670d7d4c 100644 (file)
@@ -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<int>(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<QString, QString> DSysInfo::distributionOrgWebsite(DSysInfo::OrgType type)
 {
 #ifdef Q_OS_LINUX
-    siGlobal->ensureDeepinInfo();
+       siGlobal->ensureDistributionInfo();
 #endif
 
     QString fallbackSiteName = type == Distribution ? QStringLiteral("www.deepin.org") : QString();