fix #25: possible NullReferenceException with Document.LargestThumbSize

fix undisposed FileStream on broken session file.
This commit is contained in:
Wizou 2022-01-26 11:08:33 +01:00
parent 582027e800
commit 12850182ff
2 changed files with 9 additions and 8 deletions

View file

@ -47,9 +47,9 @@ namespace WTelegram
{
var header = new byte[8];
var fileStream = new FileStream(pathname, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None, 1); // no buffering
if (fileStream.Read(header, 0, 8) == 8)
{
try
{
if (fileStream.Read(header, 0, 8) == 8)
{
var position = BinaryPrimitives.ReadInt32LittleEndian(header);
var length = BinaryPrimitives.ReadInt32LittleEndian(header.AsSpan(4));
@ -65,11 +65,12 @@ namespace WTelegram
Helpers.Log(2, "Loaded previous session");
return session;
}
}
catch (Exception ex)
{
fileStream.Dispose();
throw new ApplicationException($"Exception while reading session file: {ex.Message}\nDelete the file to start a new session", ex);
}
}
return new Session { _fileStream = fileStream, _nextPosition = 8, _rgbKey = rgbKey };
}

View file

@ -357,7 +357,7 @@ namespace TL
public override long ID => id;
protected override InputDocument ToInputDocument() => new() { id = id, access_hash = access_hash, file_reference = file_reference };
public InputDocumentFileLocation ToFileLocation(PhotoSizeBase thumbSize = null) => new() { id = id, access_hash = access_hash, file_reference = file_reference, thumb_size = thumbSize?.Type };
public PhotoSizeBase LargestThumbSize => thumbs.Aggregate((agg, next) => (long)next.Width * next.Height > (long)agg.Width * agg.Height ? next : agg);
public PhotoSizeBase LargestThumbSize => thumbs?.Aggregate((agg, next) => (long)next.Width * next.Height > (long)agg.Width * agg.Height ? next : agg);
}
partial class SendMessageAction