From 583d9980b72a8444623c933598b325f74858e300 Mon Sep 17 00:00:00 2001 From: jbevain Date: Fri, 4 Jun 2010 16:27:11 +0000 Subject: [PATCH] 2010-06-04 Jb Evain * ConditionalWeakTable.cs: make sure we use positive indexes. git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mcs@158486 e3ebcda4-bce8-0310-ba0a-eca2169e7518 --- class/corlib/System.Runtime.CompilerServices/ChangeLog | 4 ++++ .../System.Runtime.CompilerServices/ConditionalWeakTable.cs | 9 +++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/class/corlib/System.Runtime.CompilerServices/ChangeLog b/class/corlib/System.Runtime.CompilerServices/ChangeLog index 11bcdcf6fd..cf250b6ae6 100644 --- a/class/corlib/System.Runtime.CompilerServices/ChangeLog +++ b/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/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs b/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs index c4487531a9..ddc84f0216 100644 --- a/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs +++ b/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.11.4.GIT