@@ -51,13 +51,15 @@ public final class Cursor<T> implements AutoCloseable {
5151 private final KeyVal <T > kv ;
5252 private final Pointer ptrCursor ;
5353 private Txn <T > txn ;
54+ private final Env <T > env ;
5455
55- Cursor (final Pointer ptr , final Txn <T > txn ) {
56+ Cursor (final Pointer ptr , final Txn <T > txn , final Env < T > env ) {
5657 requireNonNull (ptr );
5758 requireNonNull (txn );
5859 this .ptrCursor = ptr ;
5960 this .txn = txn ;
6061 this .kv = txn .newKeyVal ();
62+ this .env = env ;
6163 }
6264
6365 /**
@@ -73,8 +75,11 @@ public void close() {
7375 return ;
7476 }
7577 kv .close ();
76- if (SHOULD_CHECK && !txn .isReadOnly ()) {
77- txn .checkReady ();
78+ if (SHOULD_CHECK ) {
79+ env .checkNotClosed ();
80+ if (!txn .isReadOnly ()) {
81+ txn .checkReady ();
82+ }
7883 }
7984 LIB .mdb_cursor_close (ptrCursor );
8085 closed = true ;
@@ -91,6 +96,7 @@ public void close() {
9196 */
9297 public long count () {
9398 if (SHOULD_CHECK ) {
99+ env .checkNotClosed ();
94100 checkNotClosed ();
95101 txn .checkReady ();
96102 }
@@ -109,6 +115,7 @@ public long count() {
109115 */
110116 public void delete (final PutFlags ... f ) {
111117 if (SHOULD_CHECK ) {
118+ env .checkNotClosed ();
112119 checkNotClosed ();
113120 txn .checkReady ();
114121 txn .checkWritesAllowed ();
@@ -138,6 +145,7 @@ public boolean get(final T key, final T data, final SeekOp op) {
138145 if (SHOULD_CHECK ) {
139146 requireNonNull (key );
140147 requireNonNull (op );
148+ env .checkNotClosed ();
141149 checkNotClosed ();
142150 txn .checkReady ();
143151 }
@@ -168,6 +176,7 @@ public boolean get(final T key, final GetOp op) {
168176 if (SHOULD_CHECK ) {
169177 requireNonNull (key );
170178 requireNonNull (op );
179+ env .checkNotClosed ();
171180 checkNotClosed ();
172181 txn .checkReady ();
173182 }
@@ -238,6 +247,7 @@ public boolean put(final T key, final T val, final PutFlags... op) {
238247 if (SHOULD_CHECK ) {
239248 requireNonNull (key );
240249 requireNonNull (val );
250+ env .checkNotClosed ();
241251 checkNotClosed ();
242252 txn .checkReady ();
243253 txn .checkWritesAllowed ();
@@ -281,6 +291,7 @@ public void putMultiple(final T key, final T val, final int elements,
281291 requireNonNull (txn );
282292 requireNonNull (key );
283293 requireNonNull (val );
294+ env .checkNotClosed ();
284295 txn .checkReady ();
285296 txn .checkWritesAllowed ();
286297 }
@@ -311,6 +322,7 @@ public void putMultiple(final T key, final T val, final int elements,
311322 public void renew (final Txn <T > newTxn ) {
312323 if (SHOULD_CHECK ) {
313324 requireNonNull (newTxn );
325+ env .checkNotClosed ();
314326 checkNotClosed ();
315327 this .txn .checkReadOnly (); // existing
316328 newTxn .checkReadOnly ();
@@ -339,6 +351,7 @@ public void renew(final Txn<T> newTxn) {
339351 public T reserve (final T key , final int size , final PutFlags ... op ) {
340352 if (SHOULD_CHECK ) {
341353 requireNonNull (key );
354+ env .checkNotClosed ();
342355 checkNotClosed ();
343356 txn .checkReady ();
344357 txn .checkWritesAllowed ();
@@ -361,6 +374,7 @@ public T reserve(final T key, final int size, final PutFlags... op) {
361374 public boolean seek (final SeekOp op ) {
362375 if (SHOULD_CHECK ) {
363376 requireNonNull (op );
377+ env .checkNotClosed ();
364378 checkNotClosed ();
365379 txn .checkReady ();
366380 }
0 commit comments