File 3032-Fix-sendfile-fallback-to-match-test-case.patch of Package erlang

From 0608a6bc6a89de211d697d43159d3f5c56033f2f Mon Sep 17 00:00:00 2001
From: Raimo Niskanen <raimo@erlang.org>
Date: Tue, 28 Jul 2020 14:39:44 +0200
Subject: [PATCH 2/2] Fix sendfile fallback to match test case

---
 lib/kernel/src/file.erl | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/lib/kernel/src/file.erl b/lib/kernel/src/file.erl
index 3883e05147..b34e9272b1 100644
--- a/lib/kernel/src/file.erl
+++ b/lib/kernel/src/file.erl
@@ -1307,7 +1307,8 @@ sendfile(Filename, Sock)  ->
 
 %% Internal sendfile functions
 sendfile(#file_descriptor{ module = Mod } = Fd, Sock, Offset, Bytes,
-	 ChunkSize, Headers, Trailers, Opts) ->
+	 ChunkSize, Headers, Trailers, Opts)
+  when is_integer(Offset), is_integer(Bytes) ->
     case Sock of
         {'$inet', _, _} ->
             sendfile_fallback(
@@ -1356,12 +1357,19 @@ sendfile_fallback(File, Sock, Offset, Bytes, ChunkSize, Headers, Trailers) ->
     end.
 
 
-sendfile_fallback(File, Sock, Offset, Bytes, ChunkSize) ->
+sendfile_fallback(File, Sock, Offset, Bytes, ChunkSize)
+  when 0 =< Bytes ->
     {ok, CurrPos} = file:position(File, {cur, 0}),
-    {ok, _NewPos} = file:position(File, {bof, Offset}),
-    Res = sendfile_fallback_int(File, Sock, Bytes, ChunkSize, 0),
-    _ = file:position(File, {bof, CurrPos}),
-    Res.
+    case file:position(File, {bof, Offset}) of
+        {ok, _NewPos} ->
+            Res = sendfile_fallback_int(File, Sock, Bytes, ChunkSize, 0),
+            _ = file:position(File, {bof, CurrPos}),
+            Res;
+        Error ->
+            Error
+    end;
+sendfile_fallback(_, _, _, _, _) ->
+    {error, einval}.
 
 
 sendfile_fallback_int(File, Sock, Bytes, ChunkSize, BytesSent)
-- 
2.26.2

openSUSE Build Service is sponsored by