diff options
author | Benoit Foucher <benoit@zeroc.com> | 2002-11-12 02:19:41 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2002-11-12 02:19:41 +0000 |
commit | c35c73e7ef8c83d5e5155398cfef749d48c8e38f (patch) | |
tree | dff80dacd783a9034957999e467a24a8de39f980 /java | |
parent | disable parser/scanner rules in VC projects (diff) | |
download | ice-c35c73e7ef8c83d5e5155398cfef749d48c8e38f.tar.bz2 ice-c35c73e7ef8c83d5e5155398cfef749d48c8e38f.tar.xz ice-c35c73e7ef8c83d5e5155398cfef749d48c8e38f.zip |
Bug fixes: check if cursor is not null in EntryIterator.getNext(), cursor
is null if the db is empty and he evictor iterator now closes again the
db iterator (not the map iterator).
Diffstat (limited to 'java')
-rw-r--r-- | java/src/Freeze/EvictorIteratorI.java | 15 | ||||
-rw-r--r-- | java/src/Freeze/Map.java | 4 |
2 files changed, 11 insertions, 8 deletions
diff --git a/java/src/Freeze/EvictorIteratorI.java b/java/src/Freeze/EvictorIteratorI.java index 7ae781bd8e2..7f73cc4850b 100644 --- a/java/src/Freeze/EvictorIteratorI.java +++ b/java/src/Freeze/EvictorIteratorI.java @@ -28,6 +28,14 @@ class EvictorIteratorI extends Ice.LocalObjectImpl implements EvictorIterator java.util.Map.Entry entry = (java.util.Map.Entry)iterator.next(); _identities.add(entry.getKey()); } + + // + // Close the iterator explicitly. We don't want to wait for + // the garbage collection to destroy the iterator since the + // iterator consumes resources (database locks for instance). + // + ((Freeze.Map.EntryIterator)iterator).close(); + _iterator = _identities.iterator(); } @@ -53,13 +61,6 @@ class EvictorIteratorI extends Ice.LocalObjectImpl implements EvictorIterator public void destroy() { - // - // Close the iterator explicitly. We don't want to wait for - // the garbage collection to destroy the iterator since the - // iterator consumes resources (database locks for instance). - // - ((Freeze.Map.EntryIterator)_iterator).close(); - _identities = null; _iterator = null; } diff --git a/java/src/Freeze/Map.java b/java/src/Freeze/Map.java index a9a06943eeb..d7c936fe2a4 100644 --- a/java/src/Freeze/Map.java +++ b/java/src/Freeze/Map.java @@ -411,6 +411,7 @@ public abstract class Map extends java.util.AbstractMap // // Clone the cursor so that error handling is simpler. // + assert _cursor != null; DBCursor clone = _cursor._clone(); try @@ -463,6 +464,7 @@ public abstract class Map extends java.util.AbstractMap private Entry getEntry() { + assert _cursor != null; _cursor.curr(_keyHolder, _valueHolder); return new Entry(Map.this, _cursor, _keyHolder.value, _valueHolder.value); } @@ -470,7 +472,7 @@ public abstract class Map extends java.util.AbstractMap private boolean getNext() { - if(_next == null) + if(_next == null && _cursor != null) { if(_cursor.next()) { |