summaryrefslogtreecommitdiff
path: root/jvmfwk
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2020-05-19 08:57:31 +0200
committerStephan Bergmann <sbergman@redhat.com>2020-05-19 09:57:57 +0200
commitfc1d1acd518a9937c2501242dae2af4530b52fe7 (patch)
treeec7aab25350b5bab5f0856061c3fce78eceb098a /jvmfwk
parent8209c2569f5726f9ed29f75d30efdccb94f98fe5 (diff)
Avoid UB when calling setjmp
The C standard (and thus by reference also the C++ standard) has very picky constraints how invocations of the setjmp macro need to appear to not cause undefined behavior. Change-Id: I09418de340a044e4309261bae9816ca746700858 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94474 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Diffstat (limited to 'jvmfwk')
-rw-r--r--jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx5
1 files changed, 2 insertions, 3 deletions
diff --git a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
index 7fcd60891263..abe47b567832 100644
--- a/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
+++ b/jvmfwk/plugins/sunmajor/pluginlib/sunjavaplugin.cxx
@@ -213,11 +213,10 @@ int createJvm(
g_bInGetJavaVM = 1;
jint err;
memset( jmp_jvm_abort, 0, sizeof(jmp_jvm_abort));
- int jmpval= setjmp( jmp_jvm_abort );
- /* If jmpval is not "0" then this point was reached by a longjmp in the
+ /* If the setjmp return value is not "0" then this point was reached by a longjmp in the
abort_handler, which was called indirectly by JNI_CreateVM.
*/
- if( jmpval == 0)
+ if( setjmp( jmp_jvm_abort ) == 0)
{
//returns negative number on failure
err= pCreateJavaVM(pJavaVM, ppEnv, vm_args);