diff options
author | Nathan Hartman <hartman.nathan@gmail.com> | 2020-08-17 07:46:49 -0400 |
---|---|---|
committer | James McCoy <jamessan@debian.org> | 2020-08-17 07:46:49 -0400 |
commit | b135d80d412574356f0ce405ac122658d2ca4eb9 (patch) | |
tree | 96b076958a8ce3d4facd9aaf9f7534cf16ce31a8 | |
parent | 6af3432794784477f196cbb9ba9e2f93c86a7a52 (diff) |
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
Signed-off-by: James McCoy <jamessan@debian.org>
-rw-r--r-- | subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp b/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp index db05e28..3d6b588 100644 --- a/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp +++ b/subversion/bindings/javahl/native/jniwrapper/jni_string_map.hpp @@ -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()); } |