Merge pull request #110 from Snapmaker/dev_crash_fixed_alves

fix code format for read config file data.
This commit is contained in:
Alves
2026-01-08 15:27:42 +08:00
committed by GitHub
2 changed files with 82 additions and 36 deletions

View File

@@ -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;
@@ -114,17 +120,26 @@ namespace common
{
std::string localArea = "";
std::string cfgfile = "";
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;
cfgfile = filePath + "\\" + std::string("Snapmaker_Orca\\Snapmaker_Orca.conf");
delete[] path;
#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
@@ -147,19 +162,26 @@ namespace common
std::string getLanguage()
{
std::string localLanguage = "";
std::string versionFilePath = "";
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;
versionFilePath = home_env;
cfgfile = versionFilePath + "/Library/Application Support/Snapmaker_Orca/Snapmaker_Orca.conf";
#else

View File

@@ -15,6 +15,9 @@
#ifdef _WIN32
#include <Windows.h>
#include <shlobj.h>
#include <stdlib.h>
#include <iphlpapi.h>
#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,48 +285,63 @@ 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);
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;
}