Fix issue with HFA altjit api
authorBruce Forstall <brucefo@microsoft.com>
Wed, 27 Sep 2017 21:42:04 +0000 (14:42 -0700)
committerBruce Forstall <brucefo@microsoft.com>
Wed, 27 Sep 2017 21:42:04 +0000 (14:42 -0700)
One case in the Interop\ArrayMarshalling\ByValArray\MarshalArrayByValTest\MarshalArrayByValTest.cmd
test marshals an array of strings as members of a struct. The !FEATURE_HFA
code for IsHFA() needs to check for value type before calling CheckForHFA(),
which will assert if it is not a value type.

Fixes #14196.

src/vm/class.cpp

index e4268b57ec5c4b2bdbe74ea413520a4ad4114f6f..9d82f775dc1e4d23020dbe146d05d515b7dc0053 100644 (file)
@@ -1641,7 +1641,14 @@ bool MethodTable::IsHFA()
 #ifdef DACCESS_COMPILE
     return false;
 #else
-    return GetClass()->CheckForHFA();
+    if (GetClass()->GetMethodTable()->IsValueType())
+    {
+        return GetClass()->CheckForHFA();
+    }
+    else
+    {
+        return false;
+    }
 #endif
 }
 #endif // !FEATURE_HFA