Author: hartmannathan
Date: Sun Aug 16 04:39:55 2020
New Revision: 1880886

URL: http://svn.apache.org/viewvc?rev=1880886&view=rev
Log:
Fix crash in JavaHL JNI wrapper caused by object lifetimes

See dev@ email thread "JNI segfault while running Java tests" started
2020/08/08, archived at:

https://lists.apache.org/thread.html/rff3fa5ea97267adf36cc9daa3be01392e53fbc8050a91df4bbac01d8%40%3Cdev.subversion.apache.org%3E
https://svn.haxx.se/dev/archive-2020-08/0010.shtml

* subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp
  (Java::BaseImmutableMap::Entry::key): As the locally-scoped String::Contents
    object keeps a reference to a String, ensure the String will remain in
    scope for the lifetime of the String::Contents object by instantiating it
    as a local variable.

Reported by: jamessan

Patch by: Daniel Sahlberg <daniel.l.sahlberg {_AT_} gmail.com>

Reviewed by: Alexandr Miloslavskiy <alexandr.miloslavskiy {_AT_} syntevo.com>
             hartmannathan

Tested by: jamessan

Modified:
    
subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp

Modified: 
subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp
URL: 
http://svn.apache.org/viewvc/subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp?rev=1880886&r1=1880885&r2=1880886&view=diff
==============================================================================
--- 
subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp
 (original)
+++ 
subversion/trunk/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp
 Sun Aug 16 04:39:55 2020
@@ -144,7 +144,8 @@ protected:
       {
         const jstring jkey =
           jstring(m_env.CallObjectMethod(m_jthis, impl().m_mid_get_key));
-        const String::Contents key(String(m_env, jkey));
+        const String str(m_env, jkey);
+        const String::Contents key(str);
         return std::string(key.c_str());
       }
 


Reply via email to