Skip to content

Commit 194102d

Browse files
authored
Merge pull request #865 from Unity-Technologies/unity-master-valuetype-equals-gethashcode-pointer-fields
Support pointer fields in ValueType Equals & GetHashCode (case 1005597) Release Notes: case 1005597 - Fix crash when calling NativeArray.Equals
2 parents a49c62a + af9f98c commit 194102d

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

mono/metadata/icall.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,6 +1096,9 @@ ves_icall_System_ValueType_InternalGetHashCode (MonoObject *this_obj, MonoArray
10961096
case MONO_TYPE_I4:
10971097
result ^= *(gint32*)((guint8*)this_obj + field->offset);
10981098
break;
1099+
case MONO_TYPE_PTR:
1100+
result ^= mono_aligned_addr_hash (*(gpointer*)((guint8*)this_obj + field->offset));
1101+
break;
10991102
case MONO_TYPE_STRING: {
11001103
MonoString *s;
11011104
s = *(MonoString**)((guint8*)this_obj + field->offset);
@@ -1195,6 +1198,10 @@ ves_icall_System_ValueType_Equals (MonoObject *this_obj, MonoObject *that, MonoA
11951198
if (*(double*)((guint8*)this_obj + field->offset) != *(double*)((guint8*)that + field->offset))
11961199
return FALSE;
11971200
break;
1201+
case MONO_TYPE_PTR:
1202+
if (*(gpointer*)((guint8*)this_obj + field->offset) != *(gpointer*)((guint8*)that + field->offset))
1203+
return FALSE;
1204+
break;
11981205

11991206

12001207
case MONO_TYPE_STRING: {

0 commit comments

Comments
 (0)