Index: subversion/bindings/javahl/native/SVNBase.cpp =================================================================== --- subversion/bindings/javahl/native/SVNBase.cpp (revision 1328758) +++ subversion/bindings/javahl/native/SVNBase.cpp (working copy) @@ -77,7 +77,12 @@ void SVNBase::finalize() void SVNBase::dispose(jobject jthis, jfieldID *fid, const char *className) { + disconnectCppObject(jthis, fid, className); delete this; +} + +void SVNBase::disconnectCppObject(jobject jthis, jfieldID *fid, const char *className) +{ JNIEnv *env = JNIUtil::getEnv(); SVNBase::findCppAddrFieldID(fid, className, env); if (*fid == 0) Index: subversion/bindings/javahl/native/SVNBase.h =================================================================== --- subversion/bindings/javahl/native/SVNBase.h (revision 1328758) +++ subversion/bindings/javahl/native/SVNBase.h (working copy) @@ -83,6 +83,13 @@ class SVNBase */ void dispose(jobject jthis, jfieldID *fid, const char *className); + /** + * Remove cppAddr from the related java object so that it cannot + * try to access disposed object + * @since 1.7.? + */ + void disconnectCppObject(jobject jthis, jfieldID *fid, const char *className); + private: /** * If the value pointed to by @a fid is zero, find the @c jfieldID