From 671cc769a622209e35212c16ae5ac4518d91cc9d Mon Sep 17 00:00:00 2001 From: Kamron Batman <3953314+kamronbatman@users.noreply.github.com> Date: Mon, 23 Aug 2021 20:44:02 -0700 Subject: [PATCH] fix(codegen): Fixes codegenning timers when they are null. (#723) When a timer is null, the code generator will use `TimeSpan.MinValue` as the delay. --- .../SerializableMigration/Rules/TimerMigrationRule.cs | 5 +++-- Projects/Server/NativeReader.cs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Projects/SerializationGenerator/SerializableMigration/Rules/TimerMigrationRule.cs b/Projects/SerializationGenerator/SerializableMigration/Rules/TimerMigrationRule.cs index 6479fb657..9fba1913a 100644 --- a/Projects/SerializationGenerator/SerializableMigration/Rules/TimerMigrationRule.cs +++ b/Projects/SerializationGenerator/SerializableMigration/Rules/TimerMigrationRule.cs @@ -63,7 +63,8 @@ namespace SerializableMigration var driftTimer = ruleArguments![0].Contains("@TimerDrift"); var readTimer = driftTimer ? "reader.ReadDeltaTime()" : "reader.ReadDateTime()"; - source.AppendLine($"{indent}var {propertyName}Delay = {readTimer} - Core.Now;"); + source.AppendLine($"{indent}var {propertyName}Next = {readTimer};"); + source.AppendLine($"{indent}var {propertyName}Delay = {propertyName}Next == System.DateTime.MinValue ? System.TimeSpan.MinValue : {propertyName}Next - Core.Now;"); } public void GenerateSerializationMethod(StringBuilder source, string indent, SerializableProperty property) @@ -80,7 +81,7 @@ namespace SerializableMigration var driftTimer = ruleArguments![0].Contains("@TimerDrift"); var writerMethod = driftTimer ? "WriteDeltaTime" : "Write"; - source.AppendLine($"{indent}writer.{writerMethod}({propertyName}.Next);"); + source.AppendLine($"{indent}writer.{writerMethod}({propertyName}?.Next ?? System.DateTime.MinValue);"); } public void PostDeserializeMethod( diff --git a/Projects/Server/NativeReader.cs b/Projects/Server/NativeReader.cs index ae6392775..0b6dc1d41 100644 --- a/Projects/Server/NativeReader.cs +++ b/Projects/Server/NativeReader.cs @@ -57,6 +57,6 @@ namespace Server InternalRead(source, buffer, bufferIndex, length); internal unsafe int InternalRead(FileStream source, void* buffer, int bufferIndex, int length) => - UnsafeNativeMethods.read(source.SafeFileHandle.DangerousGetHandle(), (byte*)buffer + bufferIndex, length); + UnsafeNativeMethods.read(source.SafeFileHandle!.DangerousGetHandle(), (byte*)buffer + bufferIndex, length); } }