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;


Reply via email to