From 498a8e2b7dbb8be0444d98fdb443741266c5e925 Mon Sep 17 00:00:00 2001 From: Peter Johnson Date: Wed, 14 Dec 2016 23:18:09 -0800 Subject: [PATCH] Fix JArrayRef DirectBuffer destructor. Previously it would try to release array elements even if the DirectBuffer constructor was used. --- include/support/jni_util.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/support/jni_util.h b/include/support/jni_util.h index 7659abd168..a330f7abd9 100644 --- a/include/support/jni_util.h +++ b/include/support/jni_util.h @@ -167,7 +167,7 @@ class JArrayRefBase : public JArrayRefInner, 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(m_jarr), \ m_elements, JNI_ABORT); \ } \ @@ -181,7 +181,7 @@ class JArrayRefBase : public JArrayRefInner, T> { static_cast(env->GetPrimitiveArrayCritical(jarr, nullptr)); \ } \ ~CriticalJ##F##ArrayRef() { \ - if (m_elements) \ + if (m_jarr && m_elements) \ m_env->ReleasePrimitiveArrayCritical(m_jarr, m_elements, JNI_ABORT); \ } \ };