imazen/imageflow-dotnet

Incorrect exception when passing stream that does not expose a buffer

mpec opened this issue · 3 comments

mpec commented

When passing a MemoryStream that does not expose buffer via this method: https://learn.microsoft.com/en-us/dotnet/api/system.io.memorystream.trygetbuffer?view=net-8.0 I get the following exception:

System.OverflowException:
   at Imageflow.Fluent.BufferedStreamSource.TryGetWrittenMemory (Imageflow.Net, Version=0.13.1.0, Culture=neutral, PublicKeyToken=null)
   at Imageflow.Fluent.BufferedStreamSource+<BorrowReadOnlyMemoryAsync>d__8.MoveNext (Imageflow.Net, Version=0.13.1.0, Culture=neutral, PublicKeyToken=null)
[snip]
, Message: Streams cannot exceed 2GB 

When running code:

var memorySource = BufferedStreamSource.BorrowEntireStream(sanitizedStream);
var info = await ImageJob.GetImageInfoAsync(memorySource, SourceLifetime.Borrowed);

I think this should be validated when creating BufferedStreamSource and more appropriate exception be thrown.

Thanks. This should be fixed in the next release, and will "just work" - it is supposed to fall back to using read methods