Signed-off-by: Hugh McMaster hugh.mcmaster@outlook.com --- 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..f28ea467fc9 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 */,