summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Hartman <hartman.nathan@gmail.com>2020-08-17 07:46:49 -0400
committerJames McCoy <jamessan@debian.org>2020-08-17 07:46:49 -0400
commitb135d80d412574356f0ce405ac122658d2ca4eb9 (patch)
tree96b076958a8ce3d4facd9aaf9f7534cf16ce31a8
parent6af3432794784477f196cbb9ba9e2f93c86a7a52 (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.hpp3
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());
}