Преглед на файлове

Fix to licensing crash because of overflowing date

Kenric Nugteren преди 1 месец
родител
ревизия
6f29b6bb53
променени са 1 файла, в които са добавени 26 реда и са изтрити 1 реда
  1. 26 1
      prs.server/Forms/DatabaseLicense/LicenseRenewalForm.xaml.cs

+ 26 - 1
prs.server/Forms/DatabaseLicense/LicenseRenewalForm.xaml.cs

@@ -93,7 +93,32 @@ public partial class LicenseRenewalForm : ThemableWindow, IDynamicEditorHost
 
 
     public DateTime NewExpiration
     public DateTime NewExpiration
     {
     {
-        get => RenewalDate.AddMonths(RenewalPeriod);
+        get
+        {
+            // Extra logic to prevent overflow of dates
+            if(RenewalPeriod > 0)
+            {
+                if(RenewalDate >= DateTime.MaxValue.AddMonths(-RenewalPeriod))
+                {
+                    return DateTime.MaxValue;
+                }
+                else
+                {
+                    return RenewalDate.AddMonths(RenewalPeriod);
+                }
+            }
+            else
+            {
+                if (RenewalDate <= DateTime.MinValue.AddMonths(-RenewalPeriod))
+                {
+                    return DateTime.MinValue;
+                }
+                else
+                {
+                    return RenewalDate.AddMonths(RenewalPeriod);
+                }
+            }
+        }
     }
     }
 
 
     public List<LicenseTrackingItem> LicenseItems { get; private set; }
     public List<LicenseTrackingItem> LicenseItems { get; private set; }