@@ -69,7 +69,7 @@ g_.arError = api.CreateObject("Array");
6969
7070AboutTE = function ( n ) {
7171 if ( n == 0 ) {
72- return te . Version < 20251220 ? te . Version : 20251231 ;
72+ return te . Version < 20260127 ? te . Version : 20260127 ;
7373 }
7474 if ( n == 1 ) {
7575 const v = AboutTE ( 0 ) ;
@@ -696,6 +696,16 @@ LoadXml = function (filename, nGroup) {
696696 -- g_ . LockUpdate ;
697697}
698698
699+ SafeReplaceFile = function ( path ) {
700+ if ( api . ReplaceFile ( path , path + ".tmp" , path + ".bak" , REPLACEFILE_WRITE_THROUGH ) ) {
701+ if ( te . Data . Conf_Backup ) {
702+ DeleteItem ( path + ".bak" , te . Data . Conf_Backup == 1 ? 0 : FOF_ALLOWUNDO | FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOERRORUI ) ;
703+ }
704+ } else {
705+ DeleteItem ( path + ".tmp" ) ;
706+ }
707+ }
708+
699709SaveXmlTC = function ( Ctrl , xml , nGroup ) {
700710 if ( ! Ctrl ) {
701711 return ;
@@ -789,7 +799,9 @@ SaveConfigXML = function (filename) {
789799
790800 MainWindow . RunEvent1 ( "SaveConfig" , xml ) ;
791801 try {
792- xml . save ( PathUnquoteSpaces ( filename ) ) ;
802+ const path = PathUnquoteSpaces ( filename ) ;
803+ xml . save ( path + ".tmp" ) ;
804+ SafeReplaceFile ( path ) ;
793805 } catch ( e ) {
794806 if ( e . number != E_ACCESSDENIED ) {
795807 ShowError ( e , [ GetText ( "Save" ) , filename ] . join ( ": " ) ) ;
@@ -823,7 +835,9 @@ SaveXml = function (filename) {
823835
824836 MainWindow . RunEvent1 ( "SaveWindow" , xml ) ;
825837 try {
826- xml . save ( ExtractPath ( te , filename ) ) ;
838+ const path = ExtractPath ( te , filename ) ;
839+ xml . save ( path + ".tmp" ) ;
840+ SafeReplaceFile ( path ) ;
827841 } catch ( e ) {
828842 if ( e . number != E_ACCESSDENIED ) {
829843 ShowError ( e , [ GetText ( "Save" ) , filename ] . join ( ": " ) ) ;
@@ -3006,7 +3020,8 @@ MakeMenus = function (hMenu, menus, arMenu, items, Ctrl, pt, nMin, arItem, bTran
30063020SaveXmlEx = function ( fn , xml ) {
30073021 try {
30083022 fn = BuildPath ( te . Data . DataFolder , "config\\" + fn ) ;
3009- xml . save ( fn ) ;
3023+ xml . save ( fn + ".tmp" ) ;
3024+ SafeReplaceFile ( fn ) ;
30103025 } catch ( e ) {
30113026 if ( e . number != E_ACCESSDENIED ) {
30123027 ShowError ( e , [ GetText ( "Save" ) , fn ] . join ( ": " ) ) ;
0 commit comments