summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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);
}