From cf46733632c7279a9fd0fe6ce26f9185a4ae82a9 Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Sat, 5 Aug 2017 16:22:51 +0000 Subject: subversion-1.9.7 --- subversion/bindings/javahl/native/JNIByteArray.cpp | 30 +++++++++------------- 1 file changed, 12 insertions(+), 18 deletions(-) (limited to 'subversion/bindings/javahl/native/JNIByteArray.cpp') diff --git a/subversion/bindings/javahl/native/JNIByteArray.cpp b/subversion/bindings/javahl/native/JNIByteArray.cpp index 34ce96c..cedb1bb 100644 --- a/subversion/bindings/javahl/native/JNIByteArray.cpp +++ b/subversion/bindings/javahl/native/JNIByteArray.cpp @@ -32,30 +32,24 @@ * @param flag that the underlying byte array reference should be deleted at * destruction */ -JNIByteArray::JNIByteArray(jbyteArray jba, bool deleteByteArray) -{ - m_array = jba; - m_deleteByteArray = deleteByteArray; - if (jba != NULL) - { - // Get the bytes. - JNIEnv *env = JNIUtil::getEnv(); - m_data = env->GetByteArrayElements(jba, NULL); - } - else - { - m_data = NULL; - } -} +JNIByteArray::JNIByteArray(jbyteArray jba, + bool deleteByteArray, + bool abortOnRelease) + : m_array(jba), + m_data(!jba ? NULL + : JNIUtil::getEnv()->GetByteArrayElements(jba, NULL)), + m_deleteByteArray(deleteByteArray), + m_abortOnRelease(abortOnRelease) +{} JNIByteArray::~JNIByteArray() { if (m_array != NULL) { // Release the bytes - JNIUtil::getEnv()->ReleaseByteArrayElements(m_array, - m_data, - JNI_ABORT); + JNIUtil::getEnv()->ReleaseByteArrayElements( + m_array, m_data, + (m_abortOnRelease ? JNI_ABORT: JNI_COMMIT)); if (m_deleteByteArray) // And if needed the byte array. JNIUtil::getEnv()->DeleteLocalRef(m_array); -- cgit v1.2.1