Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 5e0725b

Browse files
committed
Fix NRE in ReflectionOptimizer
1 parent 1b85b37 commit 5e0725b

File tree

2 files changed

+6
-2
lines changed

2 files changed

+6
-2
lines changed

src/ServiceStack.Text/ReflectionOptimizer.Emit.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace ServiceStack.Text
1111
public sealed class EmitReflectionOptimizer : ReflectionOptimizer
1212
{
1313
private static EmitReflectionOptimizer provider;
14-
public static EmitReflectionOptimizer Provider => provider ?? (provider = new EmitReflectionOptimizer());
14+
public static EmitReflectionOptimizer Provider => provider ??= new EmitReflectionOptimizer();
1515
private EmitReflectionOptimizer() { }
1616

1717
public override Type UseType(Type type)
@@ -52,6 +52,8 @@ public override GetMemberDelegate CreateGetter(PropertyInfo propertyInfo)
5252
}
5353

5454
var mi = propertyInfo.GetGetMethod(true);
55+
if (mi == null)
56+
return null;
5557
gen.Emit(mi.IsFinal ? OpCodes.Call : OpCodes.Callvirt, mi);
5658

5759
if (propertyInfo.PropertyType.IsValueType)
@@ -70,6 +72,8 @@ public override GetMemberDelegate<T> CreateGetter<T>(PropertyInfo propertyInfo)
7072

7173
var gen = getter.GetILGenerator();
7274
var mi = propertyInfo.GetGetMethod(true);
75+
if (mi == null)
76+
return null;
7377

7478
if (typeof(T).IsValueType)
7579
{

src/ServiceStack.Text/ReflectionOptimizer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public abstract class ReflectionOptimizer
3636
public sealed class RuntimeReflectionOptimizer : ReflectionOptimizer
3737
{
3838
private static RuntimeReflectionOptimizer provider;
39-
public static RuntimeReflectionOptimizer Provider => provider ?? (provider = new RuntimeReflectionOptimizer());
39+
public static RuntimeReflectionOptimizer Provider => provider ??= new RuntimeReflectionOptimizer();
4040
private RuntimeReflectionOptimizer(){}
4141

4242
public override Type UseType(Type type) => type;

0 commit comments

Comments
 (0)