From 40f566974ce1fb20653dc9eaebf65dad12d85cf1 Mon Sep 17 00:00:00 2001 From: alves Date: Thu, 8 Jan 2026 14:53:53 +0800 Subject: [PATCH 1/2] fix code format for read config file data. --- src/common_func/common_func.cpp | 50 +++++++++++++++++++--------- src/sentry_wrapper/SentryWrapper.cpp | 36 +++++++++++++++----- 2 files changed, 63 insertions(+), 23 deletions(-) diff --git a/src/common_func/common_func.cpp b/src/common_func/common_func.cpp index 4b31cfd860..120985e138 100644 --- a/src/common_func/common_func.cpp +++ b/src/common_func/common_func.cpp @@ -78,13 +78,19 @@ namespace common std::string versionFilePath = ""; #ifdef _WIN32 - wchar_t appDataPath[MAX_PATH] = {0}; - auto hr = SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appDataPath); - char* path = new char[MAX_PATH]; - size_t pathLength; - wcstombs_s(&pathLength, path, MAX_PATH, appDataPath, MAX_PATH); + PWSTR pszPath = nullptr; + char* path = new char[MAX_PATH](); + size_t pathLength = 0; + HRESULT hr = SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, nullptr, &pszPath); + if (SUCCEEDED(hr)) { + wcstombs_s(&pathLength, path, MAX_PATH, pszPath, MAX_PATH); + CoTaskMemFree(pszPath); + } + std::string filePath = path; versionFilePath = filePath + "\\" + std::string("Snapmaker_Orca\\web\\flutter_web\\version.json"); + + delete[] path; #elif __APPLE__ const char* home_env = getenv("HOME"); versionFilePath = home_env; @@ -115,13 +121,20 @@ namespace common std::string localArea = ""; std::string cfgfile = ""; #ifdef _WIN32 - wchar_t appDataPath[MAX_PATH] = {0}; - auto hr = SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appDataPath); - char* path = new char[MAX_PATH]; - size_t pathLength; - wcstombs_s(&pathLength, path, MAX_PATH, appDataPath, MAX_PATH); + + PWSTR pszPath = nullptr; + char* path = new char[MAX_PATH](); + size_t pathLength = 0; + HRESULT hr = SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, nullptr, &pszPath); + if (SUCCEEDED(hr)) { + wcstombs_s(&pathLength, path, MAX_PATH, pszPath, MAX_PATH); + CoTaskMemFree(pszPath); + } + std::string filePath = path; cfgfile = filePath + "\\" + std::string("Snapmaker_Orca\\Snapmaker_Orca.conf"); + delete[] path; + #elif __APPLE__ const char* home_env = getenv("HOME"); cfgfile = home_env; @@ -150,13 +163,20 @@ namespace common std::string cfgfile = ""; #ifdef _WIN32 - wchar_t appDataPath[MAX_PATH] = {0}; - auto hr = SHGetFolderPathW(NULL, CSIDL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appDataPath); - char* path = new char[MAX_PATH]; - size_t pathLength; - wcstombs_s(&pathLength, path, MAX_PATH, appDataPath, MAX_PATH); + + PWSTR pszPath = nullptr; + char* path = new char[MAX_PATH](); + size_t pathLength = 0; + HRESULT hr = SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, nullptr, &pszPath); + if (SUCCEEDED(hr)) { + wcstombs_s(&pathLength, path, MAX_PATH, pszPath, MAX_PATH); + CoTaskMemFree(pszPath); + } + std::string filePath = path; cfgfile = filePath + "\\" + std::string("Snapmaker_Orca\\Snapmaker_Orca.conf"); + delete[] path; + #elif __APPLE__ const char* home_env = getenv("HOME"); cfgfile = home_env; diff --git a/src/sentry_wrapper/SentryWrapper.cpp b/src/sentry_wrapper/SentryWrapper.cpp index 33d4163a50..ef996b28b6 100644 --- a/src/sentry_wrapper/SentryWrapper.cpp +++ b/src/sentry_wrapper/SentryWrapper.cpp @@ -15,6 +15,9 @@ #ifdef _WIN32 #include #include +#include +#include +#pragma comment(lib, "iphlpapi.lib") #endif #ifdef __APPLE__ @@ -174,14 +177,20 @@ void initSentryEx() handlerDir = wstringTostring(desDir); - wchar_t appDataPath[MAX_PATH] = {0}; - auto hr = SHGetFolderPathW(NULL, CSIDL_LOCAL_APPDATA, NULL, SHGFP_TYPE_CURRENT, appDataPath); - char* path = new char[MAX_PATH]; - size_t pathLength; - wcstombs_s(&pathLength, path, MAX_PATH, appDataPath, MAX_PATH); + PWSTR pszPath = nullptr; + char* path = new char[MAX_PATH](); + size_t pathLength = 0; + HRESULT hr = SHGetKnownFolderPath(FOLDERID_LocalAppData, 0, nullptr, &pszPath); + + if (SUCCEEDED(hr)) { + wcstombs_s(&pathLength, path, MAX_PATH, pszPath, MAX_PATH); + CoTaskMemFree(pszPath); + } + std::string filePath = path; std::string appName = "\\" + std::string("Snapmaker_Orca\\"); dataBaseDir = filePath + appName; + delete[] path; #endif if (!handlerDir.empty()) @@ -276,17 +285,28 @@ void sentryReportLogEx(SENTRY_LOG_LEVEL logLevel, sentry_value_t attr = sentry_value_new_attribute(sentry_value_new_string(pcName.c_str()), NULL); sentry_value_set_by_key(tags, "pc_name", attr); } - std::string machineID = common::getMachineId(); + static std::string machineID = ""; + if (machineID.empty()) + machineID = common::getMachineId(); + if (!machineID.empty()) { sentry_value_t attr = sentry_value_new_attribute(sentry_value_new_string(machineID.c_str()), NULL); sentry_value_set_by_key(tags, "machine_id", attr); } - std::string currentLanguage = common::getLanguage(); + + static std::string currentLanguage = ""; + if (currentLanguage.empty()) + currentLanguage = common::getLanguage(); + if (!currentLanguage.empty()) { sentry_value_t attr = sentry_value_new_attribute(sentry_value_new_string(currentLanguage.c_str()), NULL); sentry_value_set_by_key(tags, "current_language", attr); } - std::string localArea = common::getLocalArea(); + + static std::string localArea = ""; + if (localArea.empty()) + localArea = common::getLocalArea(); + if (!localArea.empty()) { sentry_value_t attr = sentry_value_new_attribute(sentry_value_new_string(localArea.c_str()), NULL); From ca7199a0fb6a8b44ac206cbd7b4ec90d317608fd Mon Sep 17 00:00:00 2001 From: alves Date: Thu, 8 Jan 2026 15:13:56 +0800 Subject: [PATCH 2/2] feature fix mac os build fail bug. --- src/common_func/common_func.cpp | 8 +++++--- src/sentry_wrapper/SentryWrapper.cpp | 24 ++++++++++++++---------- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/src/common_func/common_func.cpp b/src/common_func/common_func.cpp index 120985e138..410e31568f 100644 --- a/src/common_func/common_func.cpp +++ b/src/common_func/common_func.cpp @@ -120,6 +120,8 @@ namespace common { std::string localArea = ""; std::string cfgfile = ""; + std::string versionFilePath = ""; + #ifdef _WIN32 PWSTR pszPath = nullptr; @@ -137,7 +139,7 @@ namespace common #elif __APPLE__ const char* home_env = getenv("HOME"); - cfgfile = home_env; + versionFilePath = home_env; cfgfile = versionFilePath + "/Library/Application Support/Snapmaker_Orca/Snapmaker_Orca.conf"; #else @@ -160,7 +162,7 @@ namespace common std::string getLanguage() { std::string localLanguage = ""; - + std::string versionFilePath = ""; std::string cfgfile = ""; #ifdef _WIN32 @@ -179,7 +181,7 @@ namespace common #elif __APPLE__ const char* home_env = getenv("HOME"); - cfgfile = home_env; + versionFilePath = home_env; cfgfile = versionFilePath + "/Library/Application Support/Snapmaker_Orca/Snapmaker_Orca.conf"; #else diff --git a/src/sentry_wrapper/SentryWrapper.cpp b/src/sentry_wrapper/SentryWrapper.cpp index ef996b28b6..562e82b0d4 100644 --- a/src/sentry_wrapper/SentryWrapper.cpp +++ b/src/sentry_wrapper/SentryWrapper.cpp @@ -313,31 +313,35 @@ void sentryReportLogEx(SENTRY_LOG_LEVEL logLevel, sentry_value_set_by_key(tags, "local_area", attr); } switch (logLevel) { - case SENTRY_LOG_TRACE: - sentry_msg_level = SENTRY_LEVEL_TRACE; + case SENTRY_LOG_TRACE: { + sentry_msg_level = SENTRY_LEVEL_TRACE; sentry_value_t attr = sentry_value_new_attribute(sentry_value_new_string("snapmaker_bury_point"), NULL); sentry_value_set_by_key(tags, BURY_POINT, attr); sentry_log_trace(logContent.c_str(), tags); - break; - case SENTRY_LOG_DEBUG: + } break; + case SENTRY_LOG_DEBUG: { sentry_msg_level = SENTRY_LEVEL_DEBUG; sentry_log_debug(logContent.c_str(), tags); - break; - case SENTRY_LOG_INFO: + } break; + case SENTRY_LOG_INFO: { sentry_msg_level = SENTRY_LEVEL_INFO; sentry_log_info(logContent.c_str(), tags); - break; - case SENTRY_LOG_WARNING: + } break; + case SENTRY_LOG_WARNING: { sentry_msg_level = SENTRY_LEVEL_WARNING; sentry_log_warn(logContent.c_str(), tags); - break; + } break; case SENTRY_LOG_ERROR: + { sentry_msg_level = SENTRY_LEVEL_ERROR; sentry_log_error(logContent.c_str(), tags); + } break; - case SENTRY_LOG_FATAL: + case SENTRY_LOG_FATAL: + { sentry_msg_level = SENTRY_LEVEL_FATAL; sentry_log_fatal(logContent.c_str(), tags); + } break; default: return; }