diff options
author | Marek Safar <marek.safar@gmail.com> | 2021-01-07 22:58:50 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-07 22:58:50 +0300 |
commit | 1b1b58a5da2a261d003f3f2647f7219b5344f20d (patch) | |
tree | 7fe206c6b5bc8d6d773de532f3ee8f46697d8b43 | |
parent | 6edabe0525a17bda3613c2f4e5b28db568cb2c21 (diff) |
Allow removing value of ModuleDefinition::EntryPoint (#711)
* Allow removing value of ModuleDefinition::EntryPoint
* PR feedback
-rw-r--r-- | Mono.Cecil/ModuleDefinition.cs | 15 | ||||
-rw-r--r-- | Test/Mono.Cecil.Tests/ModuleTests.cs | 6 |
2 files changed, 17 insertions, 4 deletions
diff --git a/Mono.Cecil/ModuleDefinition.cs b/Mono.Cecil/ModuleDefinition.cs index 22daecb..a18969b 100644 --- a/Mono.Cecil/ModuleDefinition.cs +++ b/Mono.Cecil/ModuleDefinition.cs @@ -260,6 +260,7 @@ namespace Mono.Cecil { internal AssemblyDefinition assembly; MethodDefinition entry_point; + bool entry_point_set; internal IReflectionImporter reflection_importer; internal IMetadataImporter metadata_importer; @@ -539,15 +540,21 @@ namespace Mono.Cecil { public MethodDefinition EntryPoint { get { - if (entry_point != null) + if (entry_point_set) return entry_point; if (HasImage) - return Read (ref entry_point, this, (_, reader) => reader.ReadEntryPoint ()); + Read (ref entry_point, this, (_, reader) => reader.ReadEntryPoint ()); + else + entry_point = null; - return entry_point = null; + entry_point_set = true; + return entry_point; + } + set { + entry_point = value; + entry_point_set = true; } - set { entry_point = value; } } public bool HasCustomDebugInformations { diff --git a/Test/Mono.Cecil.Tests/ModuleTests.cs b/Test/Mono.Cecil.Tests/ModuleTests.cs index 8e73750..5e4bee7 100644 --- a/Test/Mono.Cecil.Tests/ModuleTests.cs +++ b/Test/Mono.Cecil.Tests/ModuleTests.cs @@ -41,6 +41,12 @@ namespace Mono.Cecil.Tests { Assert.IsNotNull (entry_point); Assert.AreEqual ("System.Void Program::Main()", entry_point.ToString ()); + + module.EntryPoint = null; + Assert.IsNull (module.EntryPoint); + + module.EntryPoint = entry_point; + Assert.IsNotNull (module.EntryPoint); }); } |