summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredia Huya-Kouadio <fhuyakou@gmail.com>2020-05-25 11:48:49 -0700
committerFredia Huya-Kouadio <fhuyakou@gmail.com>2020-05-25 11:50:36 -0700
commite7e736c03be30db520a061a342eba0e81e5d131d (patch)
tree2314f027264e937f3a1fd6e0bc7bf533625b61b6
parent2709ddb163799d33b632eeeea0cdf3cd75ad16b6 (diff)
Fix parameters passing when emitting signal
The issue was caused because we were using variables local to the `for` loop block.
-rw-r--r--platform/android/plugin/godot_plugin_jni.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/platform/android/plugin/godot_plugin_jni.cpp b/platform/android/plugin/godot_plugin_jni.cpp
index 557743fa73..053a4c078e 100644
--- a/platform/android/plugin/godot_plugin_jni.cpp
+++ b/platform/android/plugin/godot_plugin_jni.cpp
@@ -114,12 +114,13 @@ JNIEXPORT void JNICALL Java_org_godotengine_godot_plugin_GodotPlugin_nativeEmitS
String signal_name = jstring_to_string(j_signal_name, env);
int count = env->GetArrayLength(j_signal_params);
+ Variant variant_params[count];
const Variant *args[count];
for (int i = 0; i < count; i++) {
jobject j_param = env->GetObjectArrayElement(j_signal_params, i);
- Variant variant = _jobject_to_variant(env, j_param);
- args[i] = &variant;
+ variant_params[i] = _jobject_to_variant(env, j_param);
+ args[i] = &variant_params[i];
env->DeleteLocalRef(j_param);
};