Fix null reference exception in TextCommand.
This commit is contained in:
		
							parent
							
								
									87ab64f727
								
							
						
					
					
						commit
						78f06a2359
					
				@ -7,10 +7,11 @@ namespace Dashboard.Drawing
 | 
				
			|||||||
{
 | 
					{
 | 
				
			||||||
    public class TextExtension : DrawExtension
 | 
					    public class TextExtension : DrawExtension
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public TextCommand TextCommand { get; } = new TextCommand();
 | 
					        public TextCommand TextCommand { get; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private TextExtension() : base("DB_Text", new [] { FontExtension.Instance, BrushExtension.Instance })
 | 
					        private TextExtension() : base("DB_Text", new [] { FontExtension.Instance, BrushExtension.Instance })
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					            TextCommand = new TextCommand(this);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public static readonly TextExtension Instance = new TextExtension();
 | 
					        public static readonly TextExtension Instance = new TextExtension();
 | 
				
			||||||
@ -19,12 +20,17 @@ namespace Dashboard.Drawing
 | 
				
			|||||||
    public class TextCommand : IDrawCommand<TextCommandArgs>
 | 
					    public class TextCommand : IDrawCommand<TextCommandArgs>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        public string Name { get; } = "Text";
 | 
					        public string Name { get; } = "Text";
 | 
				
			||||||
        public IDrawExtension Extension { get; } = TextExtension.Instance;
 | 
					        public IDrawExtension Extension { get; }
 | 
				
			||||||
        public int Length { get; } = -1;
 | 
					        public int Length { get; } = -1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        public TextCommand(TextExtension ext)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            Extension = ext;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public int WriteParams(DrawQueue queue, TextCommandArgs obj, Span<byte> param)
 | 
					        public int WriteParams(DrawQueue queue, TextCommandArgs obj, Span<byte> param)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            int size = Unsafe.SizeOf<Header>() + obj.Text.Length + sizeof(char);
 | 
					            int size = Unsafe.SizeOf<Header>() + obj.Text.Length * sizeof(char) + sizeof(char);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (param.Length < size)
 | 
					            if (param.Length < size)
 | 
				
			||||||
                return size;
 | 
					                return size;
 | 
				
			||||||
@ -52,7 +58,7 @@ namespace Dashboard.Drawing
 | 
				
			|||||||
            Header header = MemoryMarshal.Cast<byte, Header>(param[0..Unsafe.SizeOf<Header>()])[0];
 | 
					            Header header = MemoryMarshal.Cast<byte, Header>(param[0..Unsafe.SizeOf<Header>()])[0];
 | 
				
			||||||
            ReadOnlySpan<char> text = MemoryMarshal.Cast<byte, char>(param[Unsafe.SizeOf<Header>()..]);
 | 
					            ReadOnlySpan<char> text = MemoryMarshal.Cast<byte, char>(param[Unsafe.SizeOf<Header>()..]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if (header.BorderBrush == -1 || header.BorderRadius == 0)
 | 
					            if (header.BorderBrush != -1 && header.BorderRadius != 0)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return new TextCommandArgs(
 | 
					                return new TextCommandArgs(
 | 
				
			||||||
                    (IFont)queue.Resources[header.Font],
 | 
					                    (IFont)queue.Resources[header.Font],
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user