From 243dbab06a40313279ef45687c5ae7d254ce339f Mon Sep 17 00:00:00 2001
From: 2dust <31833384+2dust@users.noreply.github.com>
Date: Wed, 18 Sep 2024 19:54:38 +0800
Subject: [PATCH] Fix ?!
---
 v2rayN/ServiceLib/Common/SemanticVersion.cs         | 13 ++++++++++---
 v2rayN/ServiceLib/Common/Utils.cs                   |  7 ++++---
 .../Handler/CoreConfig/CoreConfigSingbox.cs         |  8 ++++----
 .../Handler/CoreConfig/CoreConfigV2ray.cs           |  4 ++--
 v2rayN/ServiceLib/Handler/LazyConfig.cs             |  2 +-
 v2rayN/ServiceLib/Handler/UpdateHandler.cs          |  6 +++---
 6 files changed, 24 insertions(+), 16 deletions(-)
diff --git a/v2rayN/ServiceLib/Common/SemanticVersion.cs b/v2rayN/ServiceLib/Common/SemanticVersion.cs
index c631de5b..beea6acc 100644
--- a/v2rayN/ServiceLib/Common/SemanticVersion.cs
+++ b/v2rayN/ServiceLib/Common/SemanticVersion.cs
@@ -15,11 +15,19 @@
             this.version = $"{major}.{minor}.{patch}";
         }
 
-        public SemanticVersion(string version)
+        public SemanticVersion(string? version)
         {
-            this.version = version.RemovePrefix('v');
             try
             {
+                if (version.IsNullOrEmpty())
+                {
+                    this.major = 0;
+                    this.minor = 0;
+                    this.patch = 0;
+                    return;
+                }
+                this.version = version.RemovePrefix('v');
+
                 string[] parts = this.version.Split('.');
                 if (parts.Length == 2)
                 {
@@ -43,7 +51,6 @@
                 this.major = 0;
                 this.minor = 0;
                 this.patch = 0;
-                //this.version = "0.0.0";
             }
         }
 
diff --git a/v2rayN/ServiceLib/Common/Utils.cs b/v2rayN/ServiceLib/Common/Utils.cs
index 8e2fb956..f642a423 100644
--- a/v2rayN/ServiceLib/Common/Utils.cs
+++ b/v2rayN/ServiceLib/Common/Utils.cs
@@ -158,10 +158,11 @@ namespace ServiceLib.Common
         /// 
         /// 
         /// 
-        public static string Base64Decode(string plainText)
+        public static string Base64Decode(string? plainText)
         {
             try
             {
+                if (plainText.IsNullOrEmpty()) return "";
                 plainText = plainText.Trim()
                   .Replace(Environment.NewLine, "")
                   .Replace("\n", "")
@@ -365,7 +366,7 @@ namespace ServiceLib.Common
             }
         }
 
-        public static bool IsBase64String(string plainText)
+        public static bool IsBase64String(string? plainText)
         {
             if (plainText.IsNullOrEmpty()) return false;
             var buffer = new Span(new byte[plainText.Length]);
@@ -812,7 +813,7 @@ namespace ServiceLib.Common
             }
             if (coreType != null)
             {
-                _tempPath = Path.Combine(_tempPath, coreType.ToString()!);
+                _tempPath = Path.Combine(_tempPath, coreType.ToString());
                 if (!Directory.Exists(_tempPath))
                 {
                     Directory.CreateDirectory(_tempPath);
diff --git a/v2rayN/ServiceLib/Handler/CoreConfig/CoreConfigSingbox.cs b/v2rayN/ServiceLib/Handler/CoreConfig/CoreConfigSingbox.cs
index b30d41a0..32fc70e6 100644
--- a/v2rayN/ServiceLib/Handler/CoreConfig/CoreConfigSingbox.cs
+++ b/v2rayN/ServiceLib/Handler/CoreConfig/CoreConfigSingbox.cs
@@ -865,7 +865,7 @@ namespace ServiceLib.Handler.CoreConfig
                 var txtOutbound = Utils.GetEmbedText(Global.SingboxSampleOutbound);
 
                 //Previous proxy
-                var prevNode = LazyConfig.Instance.GetProfileItemViaRemarks(subItem.prevProfile!);
+                var prevNode = LazyConfig.Instance.GetProfileItemViaRemarks(subItem.prevProfile);
                 if (prevNode is not null
                     && prevNode.configType != EConfigType.Custom)
                 {
@@ -878,7 +878,7 @@ namespace ServiceLib.Handler.CoreConfig
                 }
 
                 //Next proxy
-                var nextNode = LazyConfig.Instance.GetProfileItemViaRemarks(subItem.nextProfile!);
+                var nextNode = LazyConfig.Instance.GetProfileItemViaRemarks(subItem.nextProfile);
                 if (nextNode is not null
                     && nextNode.configType != EConfigType.Custom)
                 {
@@ -956,7 +956,7 @@ namespace ServiceLib.Handler.CoreConfig
                     if (routing != null)
                     {
                         var rules = JsonUtils.Deserialize>(routing.ruleSet);
-                        foreach (var item in rules!)
+                        foreach (var item in rules ?? [])
                         {
                             if (item.enabled)
                             {
@@ -971,7 +971,7 @@ namespace ServiceLib.Handler.CoreConfig
                     if (lockedItem != null)
                     {
                         var rules = JsonUtils.Deserialize>(lockedItem.ruleSet);
-                        foreach (var item in rules!)
+                        foreach (var item in rules ?? [])
                         {
                             GenRoutingUserRule(item, singboxConfig.route.rules);
                         }
diff --git a/v2rayN/ServiceLib/Handler/CoreConfig/CoreConfigV2ray.cs b/v2rayN/ServiceLib/Handler/CoreConfig/CoreConfigV2ray.cs
index 72f3f8ff..4e34ac4c 100644
--- a/v2rayN/ServiceLib/Handler/CoreConfig/CoreConfigV2ray.cs
+++ b/v2rayN/ServiceLib/Handler/CoreConfig/CoreConfigV2ray.cs
@@ -1204,7 +1204,7 @@ namespace ServiceLib.Handler.CoreConfig
                 var txtOutbound = Utils.GetEmbedText(Global.V2raySampleOutbound);
 
                 //Previous proxy
-                var prevNode = LazyConfig.Instance.GetProfileItemViaRemarks(subItem.prevProfile!);
+                var prevNode = LazyConfig.Instance.GetProfileItemViaRemarks(subItem.prevProfile);
                 if (prevNode is not null
                     && prevNode.configType != EConfigType.Custom
                     && prevNode.configType != EConfigType.Hysteria2
@@ -1223,7 +1223,7 @@ namespace ServiceLib.Handler.CoreConfig
                 }
 
                 //Next proxy
-                var nextNode = LazyConfig.Instance.GetProfileItemViaRemarks(subItem.nextProfile!);
+                var nextNode = LazyConfig.Instance.GetProfileItemViaRemarks(subItem.nextProfile);
                 if (nextNode is not null
                     && nextNode.configType != EConfigType.Custom
                     && nextNode.configType != EConfigType.Hysteria2
diff --git a/v2rayN/ServiceLib/Handler/LazyConfig.cs b/v2rayN/ServiceLib/Handler/LazyConfig.cs
index 4830ba92..afc1f729 100644
--- a/v2rayN/ServiceLib/Handler/LazyConfig.cs
+++ b/v2rayN/ServiceLib/Handler/LazyConfig.cs
@@ -168,7 +168,7 @@
             return SQLiteHelper.Instance.Table().FirstOrDefault(it => it.indexId == indexId);
         }
 
-        public ProfileItem? GetProfileItemViaRemarks(string remarks)
+        public ProfileItem? GetProfileItemViaRemarks(string? remarks)
         {
             if (Utils.IsNullOrEmpty(remarks))
             {
diff --git a/v2rayN/ServiceLib/Handler/UpdateHandler.cs b/v2rayN/ServiceLib/Handler/UpdateHandler.cs
index dc097966..49703f1c 100644
--- a/v2rayN/ServiceLib/Handler/UpdateHandler.cs
+++ b/v2rayN/ServiceLib/Handler/UpdateHandler.cs
@@ -191,7 +191,7 @@ namespace ServiceLib.Handler
                     //more url
                     if (Utils.IsNullOrEmpty(item.convertTarget) && Utils.IsNotEmpty(item.moreUrl.TrimEx()))
                     {
-                        if (Utils.IsNotEmpty(result) && Utils.IsBase64String(result!))
+                        if (Utils.IsNotEmpty(result) && Utils.IsBase64String(result))
                         {
                             result = Utils.Base64Decode(result);
                         }
@@ -212,7 +212,7 @@ namespace ServiceLib.Handler
                             }
                             if (Utils.IsNotEmpty(result2))
                             {
-                                if (Utils.IsBase64String(result2!))
+                                if (Utils.IsBase64String(result2))
                                 {
                                     result += Utils.Base64Decode(result2);
                                 }
@@ -368,7 +368,7 @@ namespace ServiceLib.Handler
             {
                 var gitHubReleases = JsonUtils.Deserialize>(gitHubReleaseApi);
                 var gitHubRelease = preRelease ? gitHubReleases?.First() : gitHubReleases?.First(r => r.Prerelease == false);
-                var version = new SemanticVersion(gitHubRelease?.TagName!);
+                var version = new SemanticVersion(gitHubRelease?.TagName);
                 var body = gitHubRelease?.Body;
 
                 var coreInfo = CoreInfoHandler.Instance.GetCoreInfo(type);