Explorar el Código

Mono: Some fixes for #15463

Ignacio Etcheverry hace 7 años
padre
commit
f7de51b3a6

+ 1 - 1
modules/mono/csharp_script.cpp

@@ -449,7 +449,7 @@ Vector<ScriptLanguage::StackInfo> CSharpLanguage::debug_get_current_stack_info()
 
 	// Printing an error here will result in endless recursion, so we must be careful
 
-	if (!gdmono->is_runtime_initialized() && GDMono::get_singleton()->get_editor_tools_assembly())
+	if (!gdmono->is_runtime_initialized() && GDMono::get_singleton()->get_api_assembly())
 		return Vector<StackInfo>();
 
 	MonoObject *stack_trace = mono_object_new(mono_domain_get(), CACHED_CLASS(System_Diagnostics_StackTrace)->get_mono_ptr());

+ 3 - 3
modules/mono/mono_gd/gd_mono_utils.cpp

@@ -399,7 +399,7 @@ void print_unhandled_exception(MonoObject *p_exc) {
 	print_unhandled_exception(p_exc, false);
 }
 
-void print_unhandled_exception(MonoObject *p_exc, bool p_fail_silently) {
+void print_unhandled_exception(MonoObject *p_exc, bool p_recursion_caution) {
 	mono_print_unhandled_exception(p_exc);
 #ifdef DEBUG_ENABLED
 	GDMonoClass *st_klass = CACHED_CLASS(System_Diagnostics_StackTrace);
@@ -414,7 +414,7 @@ void print_unhandled_exception(MonoObject *p_exc, bool p_fail_silently) {
 	if (unexpected_exc != NULL) {
 		mono_print_unhandled_exception(unexpected_exc);
 
-		if (p_fail_silently) {
+		if (p_recursion_caution) {
 			// Called from CSharpLanguage::get_current_stack_info,
 			// so printing an error here could result in endless recursion
 			OS::get_singleton()->printerr("Mono: Method GDMonoUtils::print_unhandled_exception failed");
@@ -425,7 +425,7 @@ void print_unhandled_exception(MonoObject *p_exc, bool p_fail_silently) {
 	}
 
 	Vector<ScriptLanguage::StackInfo> si;
-	if (stack_trace != NULL)
+	if (stack_trace != NULL && !p_recursion_caution)
 		si = CSharpLanguage::get_singleton()->stack_trace_get_info(stack_trace);
 
 	String file = si.size() ? si[0].file : __FILE__;

+ 1 - 1
modules/mono/mono_gd/gd_mono_utils.h

@@ -177,7 +177,7 @@ MonoDomain *create_domain(const String &p_friendly_name);
 String get_exception_name_and_message(MonoObject *p_ex);
 
 void print_unhandled_exception(MonoObject *p_exc);
-void print_unhandled_exception(MonoObject *p_exc, bool p_fail_silently);
+void print_unhandled_exception(MonoObject *p_exc, bool p_recursion_caution);
 
 } // namespace GDMonoUtils