File 5999-Fix-disk_log-bug-typo.patch of Package erlang

From 30da517358bf8919d0d68b05829e18142a6aabd3 Mon Sep 17 00:00:00 2001
From: Dan Gudmundsson <dgud@erlang.org>
Date: Tue, 28 May 2024 10:01:35 +0200
Subject: [PATCH] Fix disk_log bug/typo

It returned the wrong record when checking arguments,
which caused the element `head` to be set wrongly.
---
 lib/kernel/src/disk_log.erl        |  7 ++++++-
 lib/kernel/test/disk_log_SUITE.erl | 24 +++++++++++++++++-------
 2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/lib/kernel/src/disk_log.erl b/lib/kernel/src/disk_log.erl
index c6d8922e8f..ae7b778703 100644
--- a/lib/kernel/src/disk_log.erl
+++ b/lib/kernel/src/disk_log.erl
@@ -582,7 +582,12 @@ check_arg([], Res) ->
 		disk_log_1:read_size_file_version(Res#arg.file),
 	    check_wrap_arg(Ret, OldSize, Version);
         Res#arg.type =:= rotate ->
-            {ok, Res#arg{format = external}};
+            case Ret of
+                {ok, Patched} ->
+                    {ok, Patched#arg{format = external}};
+                _ ->
+                    Ret
+            end;
 	true ->
 	    Ret
     end;
diff --git a/lib/kernel/test/disk_log_SUITE.erl b/lib/kernel/test/disk_log_SUITE.erl
index dc4b6c4862..e099325ddf 100644
--- a/lib/kernel/test/disk_log_SUITE.erl
+++ b/lib/kernel/test/disk_log_SUITE.erl
@@ -92,7 +92,7 @@
         
          decrease_size_with_chunk_step/1, decrease_size_twice/1]).
 
--export([head_fun/1, hf/0, lserv/1, 
+-export([head_fun/1, hf/0, hf_bin/0, lserv/1, 
 	 measure/0, init_m/1, xx/0]).
 
 -export([init_per_testcase/2, end_per_testcase/2]).
@@ -835,8 +835,9 @@ rotate_1(Conf) when is_list(Conf) ->
     ok = disk_log:close(Name),
     del_rot_files(File, 4),
     {ok, Name} = disk_log:open([{name,Name}, {type,rotate}, {size,{8000, 3}},
-			     {format,external},
-			     {file, File}]),
+                                {format,external},
+                                {head_func, {?MODULE, hf_bin, []}},
+                                {file, File}]),
     {B1, _T1} = x_mk_bytes(10000), % lost due to rotation 
     {B2, T2} = x_mk_bytes(5000),  % file a.LOG.2.gx 
     {B3, T3} = x_mk_bytes(4000),  % file a.LOG.1.gz 
@@ -847,27 +848,32 @@ rotate_1(Conf) when is_list(Conf) ->
     ok = disk_log:blog(Name, B2),
     ok = disk_log:blog(Name, B3),
     ok = disk_log:blog_terms(a, [B4, B5, B6]),
+    {ok, BinHeader} = hf_bin(),
+    Header = binary_to_list(BinHeader),
+    T20 = Header ++ T2,
     case get_list(File ++ ".2.gz", Name, rotate) of
-        T2 ->
+        T20 ->
             ok;
         E2 ->
             test_server_fail({bad_terms, E2, T2})
     end,
-    T34 = T3 ++ T4,
+    T34 = Header ++ T3 ++ T4,
     case get_list(File ++ ".1.gz", Name, rotate) of
         T34 ->
             ok;
         E34 ->
             test_server_fail({bad_terms, E34, T34})
     end,
+    T50 = Header ++ T5,
     case get_list(File ++ ".0.gz", Name, rotate) of
-        T5 ->
+        T50 ->
             ok;
         E5 ->
             test_server_fail({bad_terms, E5, T5})
     end,
+    T60 = Header ++ T6,
     case get_list(File, Name) of
-        T6 ->
+        T60 ->
             ok;
         E6 ->
             test_server_fail({bad_terms, E6, T6})
@@ -1409,6 +1415,10 @@ hf() ->
     ets:update_counter(xxx, wrapc, 1),
     {ok, [1,2,3]}.
 
+hf_bin() ->
+    {ok, <<"1", "2", "3">>}.
+
+
 %% Test head parameter.
 plain_head(Conf) when is_list(Conf) ->
     Dir = ?privdir(Conf),
-- 
2.35.3

openSUSE Build Service is sponsored by