From e685718c3b701b67e1920a8e4f2ddce31d3ca800 Mon Sep 17 00:00:00 2001 From: Hugh McMaster Date: Wed, 21 Apr 2021 23:24:48 +1000 Subject: [PATCH] reg: Print the full key path without a trailing backslash. Signed-off-by: Hugh McMaster Signed-off-by: Alexandre Julliard --- programs/reg/reg.c | 14 +++++++++++--- programs/reg/tests/query.c | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/programs/reg/reg.c b/programs/reg/reg.c index 69107d54b92..8ffbc5054d9 100644 --- a/programs/reg/reg.c +++ b/programs/reg/reg.c @@ -205,10 +205,10 @@ WCHAR *build_subkey_path(WCHAR *path, DWORD path_len, WCHAR *subkey_name, DWORD WCHAR *get_long_key(HKEY root, WCHAR *path) { - DWORD i, array_size = ARRAY_SIZE(root_rels), len; + int i, len, path_len; WCHAR *long_key; - for (i = 0; i < array_size; i++) + for (i = 0; i < ARRAY_SIZE(root_rels); i++) { if (root == root_rels[i].key) break; @@ -223,7 +223,15 @@ WCHAR *get_long_key(HKEY root, WCHAR *path) return long_key; } - len += lstrlenW(path) + 1; /* add one for the backslash */ + path_len = lstrlenW(path); + + if (path[path_len - 1] == '\\') + { + path[path_len - 1] = 0; + path_len--; + } + + len += path_len + 1; /* add one for the concatenating backslash */ long_key = malloc((len + 1) * sizeof(WCHAR)); swprintf(long_key, len + 1, L"%s\\%s", root_rels[i].long_name, path); return long_key; diff --git a/programs/reg/tests/query.c b/programs/reg/tests/query.c index 5c97554648e..34196c77aa4 100644 --- a/programs/reg/tests/query.c +++ b/programs/reg/tests/query.c @@ -251,7 +251,7 @@ static void test_query(void) read_reg_output("reg query HKCU\\" KEY_BASE "\\ /s", buf, sizeof(buf), &r); ok(r == REG_EXIT_SUCCESS, "got exit code %d, expected 0\n", r); - compare_query(buf, test6, FALSE, TODO_REG_COMPARE); + compare_query(buf, test6, FALSE, 0); read_reg_output("reg query HKCU\\" KEY_BASE " /v Wine /s", buf, sizeof(buf), &r); ok(r == REG_EXIT_SUCCESS || r == REG_EXIT_FAILURE /* WinXP */,