summaryrefslogtreecommitdiff
path: root/src/cli/runtime/PersistentArray.cs
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2006-06-03 14:08:15 +0000
committerRich Hickey <richhickey@gmail.com>2006-06-03 14:08:15 +0000
commitb63f7ab58fb5d8fd47b09af0ccd8019a7c53c1c9 (patch)
tree4e1a846e7659b74ee68478b185a7ede4cbb3291e /src/cli/runtime/PersistentArray.cs
parentf66c7a9b216cc652a88c56e7b0bb449341d04190 (diff)
fixed use of BitArray
Diffstat (limited to 'src/cli/runtime/PersistentArray.cs')
-rw-r--r--src/cli/runtime/PersistentArray.cs7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/cli/runtime/PersistentArray.cs b/src/cli/runtime/PersistentArray.cs
index 4d42be9e..5eac2e74 100644
--- a/src/cli/runtime/PersistentArray.cs
+++ b/src/cli/runtime/PersistentArray.cs
@@ -127,7 +127,7 @@ public Object get(int i){
if(e.rev <= rev)
{
if(e.rev >= baseline
- || (history != null && history.Get(e.rev)))
+ || (history != null && e.rev < history.Length && history.Get(e.rev)))
return e.val;
}
}
@@ -166,9 +166,12 @@ PersistentArray getSetArray(){
nextRev = Interlocked.Increment(ref master.rev);
nextBaseline = nextRev;
if(history != null)
+ {
nextHistory = (BitArray) history.Clone();
+ nextHistory.Length = rev+1;
+ }
else
- nextHistory = new BitArray(rev);
+ nextHistory = new BitArray(rev+1);
for(int i=baseline;i<=rev;i++)
nextHistory.Set(i,true);
}