Author: philip
Date: Thu Jul 6 20:56:14 2017
New Revision: 1801108
URL: http://svn.apache.org/viewvc?rev=1801108&view=rev
Log:
Add exception checks to some of the JavaHL native code to avoid JVM
warnings about JNI problems of the form:
WARNING in native method: JNI call made without checking exceptions when
required to
* subversion/bindings/javahl/native/Array.cpp
(Array::init): Add exception check.
* subversion/bindings/javahl/native/CreateJ.cpp
(CreateJ::Mergeinfo): Add exception check.
* subversion/bindings/javahl/native/Iterator.cpp
(init_iterator, Iterator::next): Add exception check.
* subversion/bindings/javahl/native/OperationContext.cpp
(OperationContext::closeTunnel): Add exception check.
* subversion/bindings/javahl/native/RemoteSession.cpp
(build_string_array, long_iterable_to_revnum_array,
location_hash_to_map): Add exception check.
* subversion/bindings/javahl/native/RevisionRangeList.cpp
(RevisionRangeList::RevisionRangeList): Add exception check.
Modified:
subversion/trunk/subversion/bindings/javahl/native/Array.cpp
subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
subversion/trunk/subversion/bindings/javahl/native/Iterator.cpp
subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp
subversion/trunk/subversion/bindings/javahl/native/RemoteSession.cpp
subversion/trunk/subversion/bindings/javahl/native/RevisionRangeList.cpp
Modified: subversion/trunk/subversion/bindings/javahl/native/Array.cpp
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Array.cpp?rev=1801108&r1=1801107&r2=1801108&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Array.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Array.cpp Thu Jul 6
20:56:14 2017
@@ -55,6 +55,8 @@ Array::init(jobjectArray jobjects)
if (jobjects != NULL)
{
JNIEnv *env = JNIUtil::getEnv();
+ if (JNIUtil::isExceptionThrown())
+ return;
jint arraySize = env->GetArrayLength(jobjects);
if (JNIUtil::isExceptionThrown())
return;
Modified: subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp?rev=1801108&r1=1801107&r2=1801108&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/CreateJ.cpp Thu Jul 6
20:56:14 2017
@@ -1420,6 +1420,8 @@ jobject CreateJ::Mergeinfo(svn_mergeinfo
RevisionRangeList(static_cast<svn_rangelist_t*>(val)).toList();
env->CallVoidMethod(jmergeinfo, addRevisions, jpath, jranges);
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
env->DeleteLocalRef(jranges);
env->DeleteLocalRef(jpath);
Modified: subversion/trunk/subversion/bindings/javahl/native/Iterator.cpp
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/Iterator.cpp?rev=1801108&r1=1801107&r2=1801108&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/Iterator.cpp (original)
+++ subversion/trunk/subversion/bindings/javahl/native/Iterator.cpp Thu Jul 6
20:56:14 2017
@@ -35,6 +35,8 @@ jobject init_iterator(jobject jiterable,
return NULL;
JNIEnv* env = JNIUtil::getEnv();
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
static jmethodID iterator_mid = 0;
if (0 == iterator_mid)
@@ -99,6 +101,8 @@ jobject Iterator::next() const
return NULL;
JNIEnv* env = JNIUtil::getEnv();
+ if (JNIUtil::isJavaExceptionThrown())
+ return NULL;
static jmethodID next_mid = 0;
if (0 == next_mid)
Modified:
subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp?rev=1801108&r1=1801107&r2=1801108&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp
(original)
+++ subversion/trunk/subversion/bindings/javahl/native/OperationContext.cpp Thu
Jul 6 20:56:14 2017
@@ -643,6 +643,8 @@ OperationContext::closeTunnel(void *tunn
return;
JNIEnv *env = JNIUtil::getEnv();
+ if (JNIUtil::isJavaExceptionThrown())
+ return;
static jmethodID mid = 0;
if (0 == mid)
Modified: subversion/trunk/subversion/bindings/javahl/native/RemoteSession.cpp
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/RemoteSession.cpp?rev=1801108&r1=1801107&r2=1801108&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/RemoteSession.cpp
(original)
+++ subversion/trunk/subversion/bindings/javahl/native/RemoteSession.cpp Thu
Jul 6 20:56:14 2017
@@ -646,6 +646,8 @@ build_string_array(const Iterator& iter,
{
const char* element;
jstring jitem = (jstring)iter.next();
+ if (JNIUtil::isExceptionThrown())
+ return NULL;
if (contains_relpaths)
{
Relpath item(jitem, pool);
@@ -959,7 +961,10 @@ long_iterable_to_revnum_array(jobject jl
Iterator iter(jlong_iterable);
while (iter.hasNext())
{
- const jlong entry = env->CallLongMethod(iter.next(), mid);
+ jobject next = iter.next();
+ if (JNIUtil::isExceptionThrown())
+ return NULL;
+ const jlong entry = env->CallLongMethod(next, mid);
if (JNIUtil::isExceptionThrown())
return NULL;
APR_ARRAY_PUSH(array, svn_revnum_t) = svn_revnum_t(entry);
@@ -971,6 +976,8 @@ jobject
location_hash_to_map(apr_hash_t* locations, apr_pool_t* scratch_pool)
{
JNIEnv* env = JNIUtil::getEnv();
+ if (JNIUtil::isExceptionThrown())
+ return NULL;
jclass long_cls = env->FindClass("java/lang/Long");
if (JNIUtil::isExceptionThrown())
Modified:
subversion/trunk/subversion/bindings/javahl/native/RevisionRangeList.cpp
URL:
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/RevisionRangeList.cpp?rev=1801108&r1=1801107&r2=1801108&view=diff
==============================================================================
--- subversion/trunk/subversion/bindings/javahl/native/RevisionRangeList.cpp
(original)
+++ subversion/trunk/subversion/bindings/javahl/native/RevisionRangeList.cpp
Thu Jul 6 20:56:14 2017
@@ -42,7 +42,10 @@ RevisionRangeList::RevisionRangeList(job
m_rangelist = apr_array_make(pool.getPool(), 0, sizeof(svn_merge_range_t*));
while (iter.hasNext())
{
- svn_merge_range_t* range = RevisionRange(iter.next()).toMergeRange(pool);
+ jobject next = iter.next();
+ if (JNIUtil::isExceptionThrown())
+ return;
+ svn_merge_range_t* range = RevisionRange(next).toMergeRange(pool);
if (JNIUtil::isExceptionThrown())
return;
APR_ARRAY_PUSH(m_rangelist, svn_merge_range_t*) = range;