fix: 修复JSON导入、备份目录创建和内存安全等问题

修复JSON导入时转义字符处理不完整的问题,添加对\b、\f等控制字符的转义
改进备份目录创建逻辑,使用SHCreateDirectoryExW递归创建目录
修复内存分配失败处理,避免空指针解引用
修正选项卡标题设置位置,从Dialog改为Tabs控件
增强导入功能,支持TXT文件导入时选择目标变量类型
优化清理无效路径算法,使用标记数组减少内存移动
修复宽字符环境变量设置,使用_wputenv_s替代putenv
添加导入数据初始化,防止未初始化内存访问
改进文件属性检查,使用宽字符API支持Unicode路径
This commit is contained in:
2026-04-28 22:21:06 +08:00
parent 7908bad1f4
commit e777b26879
11 changed files with 257 additions and 157 deletions
+7 -3
View File
@@ -50,7 +50,7 @@ int main(int argc, char **argv)
log_info("PathEditor starting...");
// 强制设置 UTF8MODE 环境变量,必须在 IupOpen 之前
putenv("IUP_UTF8MODE=YES");
_wputenv_s(L"IUP_UTF8MODE", L"YES");
IupOpen(&argc, &argv);
IupSetGlobal("UTF8MODE", "YES");
@@ -105,12 +105,16 @@ int main(int argc, char **argv)
// 检查管理员权限
if (!check_admin())
{
IupMessage(_("Warning"), _(lua_config_get_string("status", "admin_warning")));
const char *admin_msg = lua_config_get_string("status", "admin_warning");
IupMessage(_("Warning"), admin_msg ? _(admin_msg) : "需要管理员权限才能编辑环境变量");
// 设置只读状态提示
Ihandle *lbl_status = IupGetDialogChild(dlg, CTRL_LBL_STATUS);
if (lbl_status)
IupSetAttribute(lbl_status, "TITLE", _(lua_config_get_string("status", "readonly")));
{
const char *readonly_msg = lua_config_get_string("status", "readonly");
IupSetAttribute(lbl_status, "TITLE", readonly_msg ? _(readonly_msg) : "只读模式");
}
// 禁用所有需要管理员权限的按钮
for (int i = 0; i < ADMIN_DISABLE_COUNT; i++)