mirror of
https://github.com/aharabada/glitchy-engine-beef.git
synced 2026-09-05 13:01:52 +00:00
Fixed crash in Logger
This commit is contained in:
@@ -109,18 +109,35 @@ public class EditorLogger : Logger
|
|||||||
DateTime timestamp = DateTime.Now;
|
DateTime timestamp = DateTime.Now;
|
||||||
|
|
||||||
String message = scope String(4096);
|
String message = scope String(4096);
|
||||||
message.AppendF(format, params args);
|
|
||||||
|
MonoExceptionHelper exceptionHelper = null;
|
||||||
|
MessageOrigin messageOrigin = null;
|
||||||
|
|
||||||
|
if (args.Count > 0)
|
||||||
|
{
|
||||||
|
exceptionHelper = args[^1] as MonoExceptionHelper;
|
||||||
|
messageOrigin = args[^1] as MessageOrigin;
|
||||||
|
}
|
||||||
|
|
||||||
|
var argsForMessage = args[0...];
|
||||||
|
|
||||||
|
if (exceptionHelper != null || messageOrigin != null)
|
||||||
|
{
|
||||||
|
argsForMessage = args[0..<^1];
|
||||||
|
}
|
||||||
|
|
||||||
|
message.AppendF(format, params argsForMessage);
|
||||||
|
|
||||||
Debug.Write($"[{timestamp:HH:mm:ss.fff}] ({_name})|{level.UpperString}: {message}\n");
|
Debug.Write($"[{timestamp:HH:mm:ss.fff}] ({_name})|{level.UpperString}: {message}\n");
|
||||||
|
|
||||||
if (Editor.Instance?.LogWindow == null)
|
if (Editor.Instance?.LogWindow == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (args.Count > 0 && (var ex = args[^1] as MonoExceptionHelper))
|
if (args.Count > 0 && exceptionHelper != null)
|
||||||
{
|
{
|
||||||
Editor.Instance.LogWindow.LogException(timestamp, ex);
|
Editor.Instance.LogWindow.LogException(timestamp, exceptionHelper);
|
||||||
}
|
}
|
||||||
else if (args.Count > 0 && (var messageOrigin = args[^1] as MessageOrigin))
|
else if (args.Count > 0 && messageOrigin != null)
|
||||||
{
|
{
|
||||||
Editor.Instance.LogWindow.Log(timestamp, level, message, new .() {IsEngineMessage = IsEngineLogger, MessageOrigin = messageOrigin});
|
Editor.Instance.LogWindow.Log(timestamp, level, message, new .() {IsEngineMessage = IsEngineLogger, MessageOrigin = messageOrigin});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,6 +206,11 @@ static class ScriptGlue
|
|||||||
static void Log_LogMessage(int32 logLevel, MonoString* message, MonoString* fileName, int lineNumber)
|
static void Log_LogMessage(int32 logLevel, MonoString* message, MonoString* fileName, int lineNumber)
|
||||||
{
|
{
|
||||||
char8* utfMessage = Mono.mono_string_to_utf8(message);
|
char8* utfMessage = Mono.mono_string_to_utf8(message);
|
||||||
|
|
||||||
|
String escapedMessage = scope String(StringView(utfMessage));
|
||||||
|
|
||||||
|
escapedMessage.Replace("{", "{{");
|
||||||
|
escapedMessage.Replace("}", "}}");
|
||||||
|
|
||||||
if (fileName != null)
|
if (fileName != null)
|
||||||
{
|
{
|
||||||
@@ -213,13 +218,14 @@ static class ScriptGlue
|
|||||||
|
|
||||||
MessageOrigin messageOrigin = new MessageOrigin(StringView(utfFileName), lineNumber);
|
MessageOrigin messageOrigin = new MessageOrigin(StringView(utfFileName), lineNumber);
|
||||||
|
|
||||||
Log.ClientLogger.Log((LogLevel)logLevel, StringView(utfMessage), messageOrigin);
|
|
||||||
|
Log.ClientLogger.Log((LogLevel)logLevel, escapedMessage, messageOrigin);
|
||||||
|
|
||||||
Mono.mono_free(utfFileName);
|
Mono.mono_free(utfFileName);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Log.ClientLogger.Log((LogLevel)logLevel, StringView(utfMessage));
|
Log.ClientLogger.Log((LogLevel)logLevel, escapedMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
Mono.mono_free(utfMessage);
|
Mono.mono_free(utfMessage);
|
||||||
|
|||||||
Reference in New Issue
Block a user