Переглянути джерело

Merge pull request #39081 from m4gr3d/fix_emit_signal_3_2

[3.2] Fix parameters passing when emitting signal
Rémi Verschelde 5 роки тому
батько
коміт
9aeb9ea826
1 змінених файлів з 6 додано та 4 видалено
  1. 6 4
      platform/android/plugin/godot_plugin_jni.cpp

+ 6 - 4
platform/android/plugin/godot_plugin_jni.cpp

@@ -119,13 +119,15 @@ 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);
-	const Variant *args[count];
+	ERR_FAIL_COND_MSG(count > VARIANT_ARG_MAX, "Maximum argument count exceeded!");
 
-	for (int i = 0; i < count; i++) {
+	Variant variant_params[VARIANT_ARG_MAX];
+	const Variant *args[VARIANT_ARG_MAX];
 
+	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);
 	};