Fix JArrayRef DirectBuffer destructor.

Previously it would try to release array elements even if the DirectBuffer
constructor was used.
This commit is contained in:
Peter Johnson
2016-12-14 23:18:09 -08:00
parent 4568156bdf
commit 498a8e2b7d

View File

@@ -167,7 +167,7 @@ class JArrayRefBase : public JArrayRefInner<JArrayRefBase<T>, T> {
m_elements = env->Get##F##ArrayElements(jarr, nullptr); \
} \
~J##F##ArrayRef() { \
if (m_elements) \
if (m_jarr && m_elements) \
m_env->Release##F##ArrayElements(static_cast<T##Array>(m_jarr), \
m_elements, JNI_ABORT); \
} \
@@ -181,7 +181,7 @@ class JArrayRefBase : public JArrayRefInner<JArrayRefBase<T>, T> {
static_cast<T *>(env->GetPrimitiveArrayCritical(jarr, nullptr)); \
} \
~CriticalJ##F##ArrayRef() { \
if (m_elements) \
if (m_jarr && m_elements) \
m_env->ReleasePrimitiveArrayCritical(m_jarr, m_elements, JNI_ABORT); \
} \
};