Mono: Some fixes for #15463
This commit is contained in:
parent
c037f6339f
commit
f7de51b3a6
@ -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
|
// 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>();
|
return Vector<StackInfo>();
|
||||||
|
|
||||||
MonoObject *stack_trace = mono_object_new(mono_domain_get(), CACHED_CLASS(System_Diagnostics_StackTrace)->get_mono_ptr());
|
MonoObject *stack_trace = mono_object_new(mono_domain_get(), CACHED_CLASS(System_Diagnostics_StackTrace)->get_mono_ptr());
|
||||||
|
@ -399,7 +399,7 @@ void print_unhandled_exception(MonoObject *p_exc) {
|
|||||||
print_unhandled_exception(p_exc, false);
|
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);
|
mono_print_unhandled_exception(p_exc);
|
||||||
#ifdef DEBUG_ENABLED
|
#ifdef DEBUG_ENABLED
|
||||||
GDMonoClass *st_klass = CACHED_CLASS(System_Diagnostics_StackTrace);
|
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) {
|
if (unexpected_exc != NULL) {
|
||||||
mono_print_unhandled_exception(unexpected_exc);
|
mono_print_unhandled_exception(unexpected_exc);
|
||||||
|
|
||||||
if (p_fail_silently) {
|
if (p_recursion_caution) {
|
||||||
// Called from CSharpLanguage::get_current_stack_info,
|
// Called from CSharpLanguage::get_current_stack_info,
|
||||||
// so printing an error here could result in endless recursion
|
// so printing an error here could result in endless recursion
|
||||||
OS::get_singleton()->printerr("Mono: Method GDMonoUtils::print_unhandled_exception failed");
|
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;
|
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);
|
si = CSharpLanguage::get_singleton()->stack_trace_get_info(stack_trace);
|
||||||
|
|
||||||
String file = si.size() ? si[0].file : __FILE__;
|
String file = si.size() ? si[0].file : __FILE__;
|
||||||
|
@ -177,7 +177,7 @@ MonoDomain *create_domain(const String &p_friendly_name);
|
|||||||
String get_exception_name_and_message(MonoObject *p_ex);
|
String get_exception_name_and_message(MonoObject *p_ex);
|
||||||
|
|
||||||
void print_unhandled_exception(MonoObject *p_exc);
|
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
|
} // namespace GDMonoUtils
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user