|
From: David C. <dc...@us...> - 2005-10-16 19:06:02
|
Update of /cvsroot/rubyeclipse/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/symbols In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31743/src/org/rubypeople/rdt/internal/core/symbols Modified Files: SymbolIndex.java Log Message: Synchronize SymbolIndex for safety. Index: SymbolIndex.java =================================================================== RCS file: /cvsroot/rubyeclipse/org.rubypeople.rdt.core/src/org/rubypeople/rdt/internal/core/symbols/SymbolIndex.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** SymbolIndex.java 13 Oct 2005 23:56:07 -0000 1.3 --- SymbolIndex.java 16 Oct 2005 19:05:45 -0000 1.4 *************** *** 25,29 **** public class SymbolIndex { ! private Map index = new HashMap(); public void add(ClassSymbol symbol, Location location) { Set locations = (Set) index.get(symbol); --- 25,30 ---- public class SymbolIndex { ! private Map index = Collections.synchronizedMap(new HashMap()); ! public void add(ClassSymbol symbol, Location location) { Set locations = (Set) index.get(symbol); *************** *** 48,62 **** public void flush(IPath foo_path) { // flush only relevant bits ! for (Iterator indexIter = index.entrySet().iterator(); indexIter.hasNext();) { ! Map.Entry entry = (Map.Entry) indexIter.next(); ! Set locations = (Set) entry.getValue(); ! ! for (Iterator locationIter = locations.iterator(); locationIter.hasNext();) { ! Location location = (Location) locationIter.next(); ! locationIter.remove(); } - - if (locations.isEmpty()) - indexIter.remove(); } } --- 49,65 ---- public void flush(IPath foo_path) { // flush only relevant bits ! synchronized (index) { ! for (Iterator indexIter = index.entrySet().iterator(); indexIter.hasNext();) { ! Map.Entry entry = (Map.Entry) indexIter.next(); ! Set locations = (Set) entry.getValue(); ! ! for (Iterator locationIter = locations.iterator(); locationIter.hasNext();) { ! Location location = (Location) locationIter.next(); ! locationIter.remove(); ! } ! ! if (locations.isEmpty()) ! indexIter.remove(); } } } |