Hugh McMaster : reg: Don't enumerate a registry key for subkeys if we know the key does not have subkeys.
Alexandre Julliard
julliard at winehq.org
Wed Apr 28 16:18:48 CDT 2021
Module: wine
Branch: master
Commit: 33cfc644a055a9bc88253ae8d8c824ad603e7a02
URL: https://source.winehq.org/git/wine.git/?a=commit;h=33cfc644a055a9bc88253ae8d8c824ad603e7a02
Author: Hugh McMaster <hugh.mcmaster at outlook.com>
Date: Wed Apr 28 19:19:32 2021 +1000
reg: Don't enumerate a registry key for subkeys if we know the key does not have subkeys.
Signed-off-by: Hugh McMaster <hugh.mcmaster at outlook.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/reg/query.c | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
diff --git a/programs/reg/query.c b/programs/reg/query.c
index 66e54548688..7e42719faf9 100644
--- a/programs/reg/query.c
+++ b/programs/reg/query.c
@@ -213,7 +213,7 @@ static int query_value(HKEY hkey, WCHAR *value_name, WCHAR *path, BOOL recurse)
static int query_all(HKEY hkey, WCHAR *path, BOOL recurse, BOOL recursing)
{
LONG rc;
- DWORD num_values;
+ DWORD num_subkeys, num_values;
DWORD max_value_len = 256, value_len;
DWORD max_data_bytes = 2048, data_size;
DWORD subkey_len;
@@ -222,8 +222,8 @@ static int query_all(HKEY hkey, WCHAR *path, BOOL recurse, BOOL recursing)
BYTE *data;
HKEY subkey;
- rc = RegQueryInfoKeyW(hkey, NULL, NULL, NULL, NULL, NULL, NULL,
- &num_values, NULL, NULL, NULL, NULL);
+ rc = RegQueryInfoKeyW(hkey, NULL, NULL, NULL, &num_subkeys, NULL,
+ NULL, &num_values, NULL, NULL, NULL, NULL);
if (rc) return 1;
if (num_values || recursing)
@@ -265,6 +265,9 @@ static int query_all(HKEY hkey, WCHAR *path, BOOL recurse, BOOL recursing)
if (i || recursing)
output_string(newlineW);
+ if (!num_subkeys)
+ return 0;
+
subkey_name = malloc(MAX_SUBKEY_LEN * sizeof(WCHAR));
path_len = lstrlenW(path);
More information about the wine-cvs
mailing list