diff --git a/src/coreclr/src/tools/crossgen2/Common/TypeSystem/Interop/IL/Marshaller.cs b/src/coreclr/src/tools/crossgen2/Common/TypeSystem/Interop/IL/Marshaller.cs index fdb64f889e76757aa96f00454d43194e4848f13c..f037e12b7808c4c7e797c1a35ba341246e80d5ae 100644 --- a/src/coreclr/src/tools/crossgen2/Common/TypeSystem/Interop/IL/Marshaller.cs +++ b/src/coreclr/src/tools/crossgen2/Common/TypeSystem/Interop/IL/Marshaller.cs @@ -1435,6 +1435,11 @@ protected override void AllocAndTransformManagedToNative(ILCodeStream codeStream { ILLocalVariable vPinnedFirstElement = emitter.NewLocal(ManagedElementType.MakeByRefType(), true); + LoadManagedValue(codeStream); + codeStream.Emit(ILOpcode.ldlen); + codeStream.Emit(ILOpcode.conv_i4); + codeStream.Emit(ILOpcode.brfalse, lNullArray); + LoadManagedValue(codeStream); codeStream.Emit(ILOpcode.call, emitter.NewToken(getRawSzArrayDataMethod)); codeStream.EmitStLoc(vPinnedFirstElement);