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