Added more substantial funny business checks.

git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@2701 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2003-07-11 01:49:52 +00:00
parent e09ef8bbb2
commit d37c56b077
@@ -1,5 +1,5 @@
// //
// $Id: DSet.java,v 1.29 2003/07/11 01:21:23 ray Exp $ // $Id: DSet.java,v 1.30 2003/07/11 01:49:52 mdb Exp $
package com.threerings.presents.dobj; package com.threerings.presents.dobj;
@@ -143,6 +143,14 @@ public class DSet
*/ */
public Iterator entries () public Iterator entries ()
{ {
// the crazy sanity checks
if (_size < 0 ||_size > _entries.length ||
(_size > 0 && _entries[_size-1] == null)) {
Log.warning("DSet in a bad way [size=" + _size +
", entries=" + StringUtil.toString(_entries) + "].");
Thread.dumpStack();
}
return new Iterator() { return new Iterator() {
public boolean hasNext () { public boolean hasNext () {
checkComodification(); checkComodification();
@@ -159,8 +167,16 @@ public class DSet
if (_modCount != _expectedModCount) { if (_modCount != _expectedModCount) {
throw new ConcurrentModificationException(); throw new ConcurrentModificationException();
} }
if (_ssize != _size) {
Log.warning("Size changed during iteration " +
"[ssize=" + _ssize + ", nsize=" + _size +
", entsries=" + StringUtil.toString(_entries) +
"].");
Thread.dumpStack();
}
} }
protected int _index = 0; protected int _index = 0;
protected int _ssize = _size;
protected int _expectedModCount = _modCount; protected int _expectedModCount = _modCount;
}; };
} }