From 066cafa54261f6196eb5b0a3e95c373a81b858d8 Mon Sep 17 00:00:00 2001 From: Jesse Talavera-Greenberg Date: Sun, 30 Oct 2022 15:34:10 -0400 Subject: [PATCH] Don't cache the version number string within `VersionNumber` - Doing so could cause `NullReferenceException`s if `Initialize()` wasn't called - This was the case when using this library in a custom build process --- Assets/Version/Version.cs | 38 +++++++++++++++----------------------- 1 file changed, 15 insertions(+), 23 deletions(-) diff --git a/Assets/Version/Version.cs b/Assets/Version/Version.cs index fe0e776..4156dbe 100644 --- a/Assets/Version/Version.cs +++ b/Assets/Version/Version.cs @@ -1,7 +1,6 @@ using System; -using System.Collections.Generic; +using System.ComponentModel; using UnityEngine; -using UnityEngine.UIElements; namespace LMS.Version { @@ -36,16 +35,6 @@ void OnEnable() public void Initialize() { - GameVersion.Initialize(); - if (extraVersions != null) - { - foreach (var extraVersion in extraVersions) - { - extraVersion.Version.Initialize(); - } - } - - if (!Application.isEditor) { var defaultStaceTraceSetting = Application.GetStackTraceLogType(LogType.Log); @@ -127,23 +116,26 @@ public class VersionNumber public int Minor; public int Build; - private Dictionary version; - - public string Version(VersionDeliniator deliniator = VersionDeliniator.Dot) => version[deliniator]; - - public void Initialize() + public string Version(VersionDeliniator deliniator = VersionDeliniator.Dot) { - version = new Dictionary() + switch (deliniator) { - {VersionDeliniator.Dot, $"{Major}.{Minor}.{Build}"}, - {VersionDeliniator.Underscore, $"{Major}_{Minor}_{Build}"} - }; + case VersionDeliniator.Dot: + return $"{Major}.{Minor}.{Build}"; + case VersionDeliniator.Underscore: + return $"{Major}_{Minor}_{Build}"; + default: + throw new InvalidEnumArgumentException(nameof(deliniator), (int)deliniator, + typeof(VersionDeliniator)); + } } - public override string ToString() + [Obsolete("No longer does anything")] + public void Initialize() { - return version[VersionDeliniator.Dot]; } + + public override string ToString() => Version(); } [Serializable]