From b672376504c56b6fda50bed8f67310509a991216 Mon Sep 17 00:00:00 2001 From: Jb Evain Date: Fri, 4 Jun 2010 16:27:11 +0000 Subject: [PATCH] 2010-06-04 Jb Evain * ConditionalWeakTable.cs: make sure we use positive indexes. svn path=/trunk/mcs/; revision=158486 --- .../corlib/System.Runtime.CompilerServices/ChangeLog | 4 ++++ .../ConditionalWeakTable.cs | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog b/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog index 11bcdcf6fd8..cf250b6ae6e 100644 --- a/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog +++ b/mcs/class/corlib/System.Runtime.CompilerServices/ChangeLog @@ -1,3 +1,7 @@ +2010-06-04 Jb Evain + + * ConditionalWeakTable.cs: make sure we use positive indexes. + 2010-05-11 Rodrigo Kumpera * ConditionalWeakTable.cs: Implement simple open addressing diff --git a/mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs b/mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs index c4487531a97..ddc84f02163 100644 --- a/mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs +++ b/mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs @@ -85,7 +85,7 @@ namespace System.Runtime.CompilerServices int idx, initial_idx; int free_slot = -1; - idx = initial_idx = RuntimeHelpers.GetHashCode (key) % len; + idx = initial_idx = (RuntimeHelpers.GetHashCode (key) & int.MaxValue) % len; do { object k = tmp [idx].key; @@ -122,7 +122,7 @@ namespace System.Runtime.CompilerServices int idx,initial_idx; int free_slot = -1; - idx = initial_idx = RuntimeHelpers.GetHashCode (key) % len; + idx = initial_idx = (RuntimeHelpers.GetHashCode (key) & int.MaxValue) % len; do { object k = data [idx].key; @@ -154,7 +154,7 @@ namespace System.Runtime.CompilerServices lock (_lock) { int len = data.Length; int idx, initial_idx; - idx = initial_idx = RuntimeHelpers.GetHashCode (key) % len; + idx = initial_idx = (RuntimeHelpers.GetHashCode (key) & int.MaxValue) % len; do { object k = data[idx].key; if (k == key) { @@ -181,7 +181,8 @@ namespace System.Runtime.CompilerServices lock (_lock) { int len = data.Length; int idx, initial_idx; - idx = initial_idx = RuntimeHelpers.GetHashCode (key) % len; + idx = initial_idx = (RuntimeHelpers.GetHashCode (key) & int.MaxValue) % len; + do { object k = data [idx].key; if (k == key) { -- 2.25.1