From 83bb549e7d7c73ce02d6b904452bbf6c8d7af377 Mon Sep 17 00:00:00 2001 From: shuax Date: Wed, 30 Mar 2022 07:55:49 +0800 Subject: [PATCH 1/9] improve registry --- core/src/xmake/winos/registry_keys.c | 4 ++ core/src/xmake/winos/registry_query.c | 62 ++++++++++++++++++++------ core/src/xmake/winos/registry_values.c | 4 ++ 3 files changed, 57 insertions(+), 13 deletions(-) diff --git a/core/src/xmake/winos/registry_keys.c b/core/src/xmake/winos/registry_keys.c index 9c346721032..d2a1c2bb57d 100644 --- a/core/src/xmake/winos/registry_keys.c +++ b/core/src/xmake/winos/registry_keys.c @@ -184,9 +184,13 @@ tb_int_t xm_winos_registry_keys(lua_State* lua) { // get registry rootkey if (!tb_strcmp(rootkey, "HKEY_CLASSES_ROOT")) key = HKEY_CLASSES_ROOT; + else if (!tb_strcmp(rootkey, "HKCR")) key = HKEY_CLASSES_ROOT; else if (!tb_strcmp(rootkey, "HKEY_CURRENT_CONFIG")) key = HKEY_CURRENT_CONFIG; + else if (!tb_strcmp(rootkey, "HKCC")) key = HKEY_CURRENT_CONFIG; else if (!tb_strcmp(rootkey, "HKEY_CURRENT_USER")) key = HKEY_CURRENT_USER; + else if (!tb_strcmp(rootkey, "HKCU")) key = HKEY_CURRENT_USER; else if (!tb_strcmp(rootkey, "HKEY_LOCAL_MACHINE")) key = HKEY_LOCAL_MACHINE; + else if (!tb_strcmp(rootkey, "HKLM")) key = HKEY_LOCAL_MACHINE; else if (!tb_strcmp(rootkey, "HKEY_USERS")) key = HKEY_USERS; else { diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index aadb65b2e3f..efff036a09c 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -33,8 +33,8 @@ /* ////////////////////////////////////////////////////////////////////////////////////// * types */ -// the RegGetValueA func type -typedef BOOL (WINAPI* xm_RegGetValueA_t)(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); +// the RegGetValueW func type +typedef BOOL (WINAPI* xm_RegGetValueW_t)(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); /* ////////////////////////////////////////////////////////////////////////////////////// * implementation @@ -60,13 +60,18 @@ tb_int_t xm_winos_registry_query(lua_State* lua) HKEY key = tb_null; HKEY keynew = tb_null; tb_char_t* value = tb_null; + tb_wchar_t* value_w = tb_null; do { // get registry rootkey if (!tb_strcmp(rootkey, "HKEY_CLASSES_ROOT")) key = HKEY_CLASSES_ROOT; + else if (!tb_strcmp(rootkey, "HKCR")) key = HKEY_CLASSES_ROOT; else if (!tb_strcmp(rootkey, "HKEY_CURRENT_CONFIG")) key = HKEY_CURRENT_CONFIG; + else if (!tb_strcmp(rootkey, "HKCC")) key = HKEY_CURRENT_CONFIG; else if (!tb_strcmp(rootkey, "HKEY_CURRENT_USER")) key = HKEY_CURRENT_USER; + else if (!tb_strcmp(rootkey, "HKCU")) key = HKEY_CURRENT_USER; else if (!tb_strcmp(rootkey, "HKEY_LOCAL_MACHINE")) key = HKEY_LOCAL_MACHINE; + else if (!tb_strcmp(rootkey, "HKLM")) key = HKEY_LOCAL_MACHINE; else if (!tb_strcmp(rootkey, "HKEY_USERS")) key = HKEY_USERS; else { @@ -75,23 +80,41 @@ tb_int_t xm_winos_registry_query(lua_State* lua) break; } - // attempt to load RegGetValueA - static xm_RegGetValueA_t s_RegGetValueA = tb_null; - if (!s_RegGetValueA) + // convert rootdir to wide characters + tb_wchar_t rootdir_w[TB_PATH_MAXN]; + if (tb_atow(rootdir_w, rootdir, TB_PATH_MAXN) == (tb_size_t)-1) + { + lua_pushnil(lua); + lua_pushfstring(lua, "invalid registry rootkey:: %s", rootdir); + break; + } + + // convert valuename to wide characters + tb_wchar_t valuename_w[TB_PATH_MAXN]; + if (tb_atow(valuename_w, valuename, TB_PATH_MAXN) == (tb_size_t)-1) + { + lua_pushnil(lua); + lua_pushfstring(lua, "invalid registry valuename: %s", valuename); + break; + } + + // attempt to load RegGetValueW + static xm_RegGetValueW_t s_RegGetValueW = tb_null; + if (!s_RegGetValueW) { // load the advapi32 module tb_dynamic_ref_t module = (tb_dynamic_ref_t)GetModuleHandleA("advapi32.dll"); if (!module) module = tb_dynamic_init("advapi32.dll"); - if (module) s_RegGetValueA = (xm_RegGetValueA_t)tb_dynamic_func(module, "RegGetValueA"); + if (module) s_RegGetValueW = (xm_RegGetValueW_t)tb_dynamic_func(module, "RegGetValueW"); } // get registry value DWORD type = 0; - if (s_RegGetValueA) + if (s_RegGetValueW) { // get registry value size DWORD valuesize = 0; - if (s_RegGetValueA(key, rootdir, valuename, RRF_RT_ANY, 0, tb_null, &valuesize) != ERROR_SUCCESS) + if (s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY, 0, tb_null, &valuesize) != ERROR_SUCCESS) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value size failed: %s\\%s;%s", rootkey, rootdir, valuename); @@ -101,11 +124,13 @@ tb_int_t xm_winos_registry_query(lua_State* lua) // make value buffer value = (tb_char_t*)tb_malloc0(valuesize + 1); tb_assert_and_check_break(value); + value_w = (tb_wchar_t*)tb_malloc0(sizeof(tb_wchar_t) * (valuesize + 1)); + tb_assert_and_check_break(value_w); // get value result, we attempt to do not expand value if get failed type = 0; - if (s_RegGetValueA(key, rootdir, valuename, RRF_RT_ANY, &type, (PVOID)value, &valuesize) != ERROR_SUCCESS && - s_RegGetValueA(key, rootdir, valuename, RRF_RT_ANY | RRF_NOEXPAND, &type, (PVOID)value, &valuesize) != ERROR_SUCCESS) + if (s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY, &type, (PVOID)value_w, &valuesize) != ERROR_SUCCESS && + s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY | RRF_NOEXPAND, &type, (PVOID)value_w, &valuesize) != ERROR_SUCCESS) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); @@ -115,7 +140,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) else { // open registry key - if (RegOpenKeyExA(key, rootdir, 0, KEY_QUERY_VALUE, &keynew) != ERROR_SUCCESS && keynew) + if (RegOpenKeyExW(key, rootdir_w, 0, KEY_QUERY_VALUE, &keynew) != ERROR_SUCCESS && keynew) { lua_pushnil(lua); lua_pushfstring(lua, "open registry key failed: %s\\%s", rootkey, rootdir); @@ -124,7 +149,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) // get registry value size DWORD valuesize = 0; - if (RegQueryValueExA(keynew, valuename, tb_null, tb_null, tb_null, &valuesize) != ERROR_SUCCESS) + if (RegQueryValueExW(keynew, valuename_w, tb_null, tb_null, tb_null, &valuesize) != ERROR_SUCCESS) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value size failed: %s\\%s;%s", rootkey, rootdir, valuename); @@ -134,10 +159,12 @@ tb_int_t xm_winos_registry_query(lua_State* lua) // make value buffer value = (tb_char_t*)tb_malloc0(valuesize + 1); tb_assert_and_check_break(value); + value_w = (tb_wchar_t*)tb_malloc0(sizeof() * (valuesize + 1)); + tb_assert_and_check_break(value_w); // get value result type = 0; - if (RegQueryValueExA(keynew, valuename, tb_null, &type, (LPBYTE)value, &valuesize) != ERROR_SUCCESS) + if (RegQueryValueExW(keynew, valuename_w, tb_null, &type, (LPBYTE)value_w, &valuesize) != ERROR_SUCCESS) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); @@ -145,6 +172,13 @@ tb_int_t xm_winos_registry_query(lua_State* lua) } } + if (tb_wtoa(valuename_w, value, valuesize + 1) == (tb_size_t)-1) + { + lua_pushnil(lua); + lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); + break; + } + // save result switch (type) { @@ -177,6 +211,8 @@ tb_int_t xm_winos_registry_query(lua_State* lua) // exit value if (value) tb_free(value); value = tb_null; + if (value_w) tb_free(value_w); + value_w = tb_null; // ok? return ok? 1 : 2; diff --git a/core/src/xmake/winos/registry_values.c b/core/src/xmake/winos/registry_values.c index 17aefef6ee8..ecddabdf58b 100644 --- a/core/src/xmake/winos/registry_values.c +++ b/core/src/xmake/winos/registry_values.c @@ -62,9 +62,13 @@ tb_int_t xm_winos_registry_values(lua_State* lua) { // get registry rootkey if (!tb_strcmp(rootkey, "HKEY_CLASSES_ROOT")) key = HKEY_CLASSES_ROOT; + else if (!tb_strcmp(rootkey, "HKCR")) key = HKEY_CLASSES_ROOT; else if (!tb_strcmp(rootkey, "HKEY_CURRENT_CONFIG")) key = HKEY_CURRENT_CONFIG; + else if (!tb_strcmp(rootkey, "HKCC")) key = HKEY_CURRENT_CONFIG; else if (!tb_strcmp(rootkey, "HKEY_CURRENT_USER")) key = HKEY_CURRENT_USER; + else if (!tb_strcmp(rootkey, "HKCU")) key = HKEY_CURRENT_USER; else if (!tb_strcmp(rootkey, "HKEY_LOCAL_MACHINE")) key = HKEY_LOCAL_MACHINE; + else if (!tb_strcmp(rootkey, "HKLM")) key = HKEY_LOCAL_MACHINE; else if (!tb_strcmp(rootkey, "HKEY_USERS")) key = HKEY_USERS; else { From 9a50e4308f3d969f6e54c74331dabc100bd8a900 Mon Sep 17 00:00:00 2001 From: shuax Date: Wed, 30 Mar 2022 07:59:36 +0800 Subject: [PATCH 2/9] improve registry --- core/src/xmake/winos/registry_query.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index efff036a09c..7c9e87689d4 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -172,7 +172,8 @@ tb_int_t xm_winos_registry_query(lua_State* lua) } } - if (tb_wtoa(valuename_w, value, valuesize + 1) == (tb_size_t)-1) + tb_size_t value_n = tb_wtoa(valuename_w, value, valuesize + 1); + if (value_n == (tb_size_t)-1) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); @@ -184,7 +185,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) { case REG_SZ: case REG_EXPAND_SZ: - lua_pushstring(lua, value); + lua_pushlstring(lua, value, value_n); ok = tb_true; break; case REG_DWORD: From 3a23627b396e789ffd0e513a9955231174ff6d35 Mon Sep 17 00:00:00 2001 From: shuax Date: Wed, 30 Mar 2022 08:05:46 +0800 Subject: [PATCH 3/9] fix typo --- core/src/xmake/winos/registry_query.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index 7c9e87689d4..c0803c6a783 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -159,7 +159,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) // make value buffer value = (tb_char_t*)tb_malloc0(valuesize + 1); tb_assert_and_check_break(value); - value_w = (tb_wchar_t*)tb_malloc0(sizeof() * (valuesize + 1)); + value_w = (tb_wchar_t*)tb_malloc0(sizeof(tb_wchar_t) * (valuesize + 1)); tb_assert_and_check_break(value_w); // get value result From 009c4ed10212b3fe2df9ad49e3c2d23ced439d13 Mon Sep 17 00:00:00 2001 From: shuax Date: Wed, 30 Mar 2022 08:13:14 +0800 Subject: [PATCH 4/9] fix bug --- core/src/xmake/winos/registry_query.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index c0803c6a783..3116d9ebdb1 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -61,6 +61,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) HKEY keynew = tb_null; tb_char_t* value = tb_null; tb_wchar_t* value_w = tb_null; + tb_size_t value_n = (tb_size_t)-1; do { // get registry rootkey @@ -136,6 +137,14 @@ tb_int_t xm_winos_registry_query(lua_State* lua) lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); break; } + + value_n = tb_wtoa(valuename_w, value, valuesize + 1); + if (value_n == (tb_size_t)-1) + { + lua_pushnil(lua); + lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); + break; + } } else { @@ -170,14 +179,14 @@ tb_int_t xm_winos_registry_query(lua_State* lua) lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); break; } - } - tb_size_t value_n = tb_wtoa(valuename_w, value, valuesize + 1); - if (value_n == (tb_size_t)-1) - { - lua_pushnil(lua); - lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); - break; + value_n = tb_wtoa(valuename_w, value, valuesize + 1); + if (value_n == (tb_size_t)-1) + { + lua_pushnil(lua); + lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); + break; + } } // save result From 5bd3faabff08f68d8a341518d2a39ea304478f6a Mon Sep 17 00:00:00 2001 From: shuax Date: Wed, 30 Mar 2022 09:28:30 +0800 Subject: [PATCH 5/9] fix bug --- core/src/xmake/winos/registry_query.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index 3116d9ebdb1..1dfcf8dc794 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -34,7 +34,7 @@ * types */ // the RegGetValueW func type -typedef BOOL (WINAPI* xm_RegGetValueW_t)(HKEY hkey, LPCSTR lpSubKey, LPCSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); +typedef BOOL (WINAPI* xm_RegGetValueW_t)(HKEY hkey, LPCWSTR lpSubKey, LPCWSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData); /* ////////////////////////////////////////////////////////////////////////////////////// * implementation From 011d92dfdba49493509ae256ee1244f283960b90 Mon Sep 17 00:00:00 2001 From: shuax Date: Wed, 30 Mar 2022 09:37:41 +0800 Subject: [PATCH 6/9] fix --- core/src/xmake/winos/registry_query.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index 1dfcf8dc794..640736ec2c5 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -138,7 +138,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) break; } - value_n = tb_wtoa(valuename_w, value, valuesize + 1); + value_n = tb_wtoa(value, valuename_w, valuesize + 1); if (value_n == (tb_size_t)-1) { lua_pushnil(lua); @@ -180,7 +180,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) break; } - value_n = tb_wtoa(valuename_w, value, valuesize + 1); + value_n = tb_wtoa(value, valuename_w, valuesize + 1); if (value_n == (tb_size_t)-1) { lua_pushnil(lua); From 3cf7e82a53fd7b92cf30b41ad7058602a7af6bf2 Mon Sep 17 00:00:00 2001 From: shuax Date: Wed, 30 Mar 2022 10:18:43 +0800 Subject: [PATCH 7/9] fix bug --- core/src/xmake/winos/registry_query.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index 640736ec2c5..6afd4b69c38 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -138,7 +138,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) break; } - value_n = tb_wtoa(value, valuename_w, valuesize + 1); + value_n = tb_wtoa(value, value_w, valuesize + 1); if (value_n == (tb_size_t)-1) { lua_pushnil(lua); @@ -180,7 +180,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) break; } - value_n = tb_wtoa(value, valuename_w, valuesize + 1); + value_n = tb_wtoa(value, value_w, valuesize + 1); if (value_n == (tb_size_t)-1) { lua_pushnil(lua); From b815b1b699e53f5475477e80d082bc6d1e7486d8 Mon Sep 17 00:00:00 2001 From: shuax Date: Wed, 30 Mar 2022 11:12:45 +0800 Subject: [PATCH 8/9] buffer size --- core/src/xmake/winos/registry_query.c | 32 ++++++++++++++------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index 6afd4b69c38..0801547d3b2 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -114,8 +114,8 @@ tb_int_t xm_winos_registry_query(lua_State* lua) if (s_RegGetValueW) { // get registry value size - DWORD valuesize = 0; - if (s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY, 0, tb_null, &valuesize) != ERROR_SUCCESS) + DWORD valuesize_w = 0; + if (s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY, 0, tb_null, &valuesize_w) != ERROR_SUCCESS) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value size failed: %s\\%s;%s", rootkey, rootdir, valuename); @@ -123,26 +123,27 @@ tb_int_t xm_winos_registry_query(lua_State* lua) } // make value buffer - value = (tb_char_t*)tb_malloc0(valuesize + 1); + DWORD valuesize = valuesize_w * 2; + value = (tb_char_t*)tb_malloc0(valuesize); tb_assert_and_check_break(value); - value_w = (tb_wchar_t*)tb_malloc0(sizeof(tb_wchar_t) * (valuesize + 1)); + value_w = (tb_wchar_t*)tb_malloc0(valuesize_w); tb_assert_and_check_break(value_w); // get value result, we attempt to do not expand value if get failed type = 0; - if (s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY, &type, (PVOID)value_w, &valuesize) != ERROR_SUCCESS && - s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY | RRF_NOEXPAND, &type, (PVOID)value_w, &valuesize) != ERROR_SUCCESS) + if (s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY, &type, (PVOID)value_w, &valuesize_w) != ERROR_SUCCESS && + s_RegGetValueW(key, rootdir_w, valuename_w, RRF_RT_ANY | RRF_NOEXPAND, &type, (PVOID)value_w, &valuesize_w) != ERROR_SUCCESS) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); break; } - value_n = tb_wtoa(value, value_w, valuesize + 1); + value_n = tb_wtoa(value, value_w, valuesize); if (value_n == (tb_size_t)-1) { lua_pushnil(lua); - lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); + lua_pushfstring(lua, "wtoa registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); break; } } @@ -157,8 +158,8 @@ tb_int_t xm_winos_registry_query(lua_State* lua) } // get registry value size - DWORD valuesize = 0; - if (RegQueryValueExW(keynew, valuename_w, tb_null, tb_null, tb_null, &valuesize) != ERROR_SUCCESS) + DWORD valuesize_w = 0; + if (RegQueryValueExW(keynew, valuename_w, tb_null, tb_null, tb_null, &valuesize_w) != ERROR_SUCCESS) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value size failed: %s\\%s;%s", rootkey, rootdir, valuename); @@ -166,25 +167,26 @@ tb_int_t xm_winos_registry_query(lua_State* lua) } // make value buffer - value = (tb_char_t*)tb_malloc0(valuesize + 1); + DWORD valuesize = valuesize_w * 2; + value = (tb_char_t*)tb_malloc0(valuesize); tb_assert_and_check_break(value); - value_w = (tb_wchar_t*)tb_malloc0(sizeof(tb_wchar_t) * (valuesize + 1)); + value_w = (tb_wchar_t*)tb_malloc0(valuesize_w); tb_assert_and_check_break(value_w); // get value result type = 0; - if (RegQueryValueExW(keynew, valuename_w, tb_null, &type, (LPBYTE)value_w, &valuesize) != ERROR_SUCCESS) + if (RegQueryValueExW(keynew, valuename_w, tb_null, &type, (LPBYTE)value_w, &valuesize_w) != ERROR_SUCCESS) { lua_pushnil(lua); lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); break; } - value_n = tb_wtoa(value, value_w, valuesize + 1); + value_n = tb_wtoa(value, value_w, valuesize); if (value_n == (tb_size_t)-1) { lua_pushnil(lua); - lua_pushfstring(lua, "get registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); + lua_pushfstring(lua, "wtoa registry value failed: %s\\%s;%s", rootkey, rootdir, valuename); break; } } From 24e7cbc6a3432ae12395e5dc73bb48b84bacaa12 Mon Sep 17 00:00:00 2001 From: ruki Date: Wed, 30 Mar 2022 12:19:43 +0800 Subject: [PATCH 9/9] Update registry_query.c --- core/src/xmake/winos/registry_query.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/xmake/winos/registry_query.c b/core/src/xmake/winos/registry_query.c index 0801547d3b2..7e0250ba733 100644 --- a/core/src/xmake/winos/registry_query.c +++ b/core/src/xmake/winos/registry_query.c @@ -61,7 +61,7 @@ tb_int_t xm_winos_registry_query(lua_State* lua) HKEY keynew = tb_null; tb_char_t* value = tb_null; tb_wchar_t* value_w = tb_null; - tb_size_t value_n = (tb_size_t)-1; + tb_size_t value_n = (tb_size_t)-1; do { // get registry rootkey