File 0619-stdlib-Fix-win32reg-value-for-default-value.patch of Package erlang

From cd7f4cf7cee3bec6dbcafec3774983056e85cda5 Mon Sep 17 00:00:00 2001
From: Regan Heath <reganmheath@gmail.com>
Date: Thu, 19 Aug 2021 19:53:09 +0200
Subject: [PATCH 2/2] stdlib: Fix win32reg:value for 'default' value

---
 lib/stdlib/src/win32reg.erl        |  9 ++++++++-
 lib/stdlib/test/win32reg_SUITE.erl | 29 +++++++++++++++++++++++++++++
 2 files changed, 37 insertions(+), 1 deletion(-)

diff --git a/lib/stdlib/src/win32reg.erl b/lib/stdlib/src/win32reg.erl
index e8e16980cb..9f257585fa 100644
--- a/lib/stdlib/src/win32reg.erl
+++ b/lib/stdlib/src/win32reg.erl
@@ -180,10 +180,17 @@ set_value({win32reg, Reg}, Name0, Value) when is_port(Reg) ->
       Name :: name(),
       ReturnValue :: {'ok', Value :: value()} | {'error', ErrorId :: atom()}.
 
-value({win32reg, Reg}, Name) when is_port(Reg) ->
+value({win32reg, Reg}, Name0) when is_port(Reg) ->
+    Name =
+	case Name0 of
+	    default -> [];
+	    _ -> Name0
+	end,
     Cmd = [?cmd_get_value, Name, 0],
     Reg ! {self(), {command, Cmd}},
     case get_result(Reg) of
+	{value, {default, Value}} when Name =:= [] ->
+	    {ok, Value};
 	{value, {Name, Value}} ->
 	    {ok, Value};
 	{error, Reason} ->
diff --git a/lib/stdlib/test/win32reg_SUITE.erl b/lib/stdlib/test/win32reg_SUITE.erl
index 14401128c1..4e45090b01 100644
--- a/lib/stdlib/test/win32reg_SUITE.erl
+++ b/lib/stdlib/test/win32reg_SUITE.erl
@@ -21,6 +21,7 @@
 
 -export([all/0, suite/0,groups/0,init_per_suite/1, end_per_suite/1, 
 	 init_per_group/2,end_per_group/2,long/1,evil_write/1,
+         read_write_default_1/1,read_write_default_2/1,
          delete_key/1, up_and_away/1]).
 
 -include_lib("common_test/include/ct.hrl").
@@ -32,6 +33,8 @@ suite() ->
 all() -> 
     [long,
      evil_write,
+     read_write_default_1,
+     read_write_default_2,
      delete_key,
      up_and_away].
 
@@ -109,6 +112,32 @@ evil_write_1(Reg, [_|[_|_]=Key]=Key0) ->
     evil_write_1(Reg, Key);
 evil_write_1(_, [_]) -> ok.
 
+read_write_default_1(Config) when is_list(Config) ->
+    Key = "Software\\Ericsson\\Erlang",
+    Value = "The default value 1",
+    {ok,Reg} = win32reg:open([read,write]),
+    ok = win32reg:change_key(Reg, "\\hkcu"),
+    ok = win32reg:change_key_create(Reg, Key),
+    ok = win32reg:set_value(Reg, default, Value),
+    {ok,Value} = win32reg:value(Reg, default),
+    ok = win32reg:delete_value(Reg, default),
+    {error,enoent} = win32reg:value(Reg, default),
+    ok = win32reg:close(Reg),
+    ok.
+
+read_write_default_2(Config) when is_list(Config) ->
+    Key = "Software\\Ericsson\\Erlang",
+    Value = "The default value 2",
+    {ok,Reg} = win32reg:open([read,write]),
+    ok = win32reg:change_key(Reg, "\\hkcu"),
+    ok = win32reg:change_key_create(Reg, Key),
+    ok = win32reg:set_value(Reg, "", Value),
+    {ok,Value} = win32reg:value(Reg, ""),
+    ok = win32reg:delete_value(Reg, ""),
+    {error,enoent} = win32reg:value(Reg, ""),
+    ok = win32reg:close(Reg),
+    ok.
+
 delete_key(Config) when is_list(Config) ->
     Key = "Software\\Ericsson\\Erlang\\new-test-key",
     {ok,Reg} = win32reg:open([read,write]),
-- 
2.31.1

openSUSE Build Service is sponsored by