summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--java/src/Freeze/EvictorIteratorI.java15
-rw-r--r--java/src/Freeze/Map.java4
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())
{