Skip to content

Commit 8099f2b

Browse files
authored
Merge pull request #1465 from virtualcell/dan-result-display-concurrent-bug
NullPointerException in TreeMap because of concurrent modification
2 parents 8c5dd63 + e6187b8 commit 8099f2b

1 file changed

Lines changed: 6 additions & 4 deletions

File tree

vcell-core/src/main/java/cbit/vcell/mapping/MathSymbolMapping.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
package cbit.vcell.mapping;
1212

1313
import java.util.*;
14+
import java.util.concurrent.ConcurrentSkipListMap;
1415

1516
import cbit.vcell.math.*;
1617
import org.vcell.util.ArrayUtils;
@@ -28,9 +29,9 @@
2829
* @author: Jim Schaff
2930
*/
3031
public class MathSymbolMapping implements SourceSymbolMapping {
31-
private TreeMap<SymbolTableEntry, String> biologicalToMathSymbolNameHash = new TreeMap<SymbolTableEntry, String>();
32-
private TreeMap<SymbolTableEntry, Variable> biologicalToMathHash = new TreeMap<SymbolTableEntry, Variable>();
33-
private TreeMap<Variable, SymbolTableEntry[]> mathToBiologicalHash = new TreeMap<Variable, SymbolTableEntry[]>();
32+
private Map<SymbolTableEntry, String> biologicalToMathSymbolNameHash = new ConcurrentSkipListMap<>();
33+
private Map<SymbolTableEntry, Variable> biologicalToMathHash = new ConcurrentSkipListMap<>();
34+
private Map<Variable, SymbolTableEntry[]> mathToBiologicalHash = new ConcurrentSkipListMap<>();
3435

3536
/**
3637
* MathSymbolMapping constructor comment.
@@ -164,7 +165,8 @@ public void transform(SimContextTransformation transformation){
164165
}
165166
}
166167
}
167-
entry.setValue(origStes.toArray(new SymbolTableEntry[0]));
168+
// ConcurrentSkipListMap.Entry does not implement setValue(), must use put() instead
169+
mathToBiologicalHash.put(key, origStes.toArray(new SymbolTableEntry[0]));
168170
}
169171
}
170172

0 commit comments

Comments
 (0)