|
@@ -3339,7 +3339,7 @@ int la_RematchPointers(int Mode){
|
|
while(inst=lstPopPointer(&MAIN.RenewHyper2s)){ laMemNodeHyper* h=memGetHead(inst,0);memMakeHyperData(h);memAssignRef(h,&h->FromFile,0); }
|
|
while(inst=lstPopPointer(&MAIN.RenewHyper2s)){ laMemNodeHyper* h=memGetHead(inst,0);memMakeHyperData(h);memAssignRef(h,&h->FromFile,0); }
|
|
}
|
|
}
|
|
|
|
|
|
-int laPackUDF(laUDF *udf, int UseInstanceList){
|
|
|
|
|
|
+int laPackUDF(laUDF *udf, int UseInstanceList, int DoBackup){
|
|
laUDFPropSegment *ps;
|
|
laUDFPropSegment *ps;
|
|
short NumSegments = 0;
|
|
short NumSegments = 0;
|
|
u64bit RefPos;
|
|
u64bit RefPos;
|
|
@@ -3348,6 +3348,11 @@ int laPackUDF(laUDF *udf, int UseInstanceList){
|
|
char Root[1024]={0};
|
|
char Root[1024]={0};
|
|
char FilePath[1024]={0};
|
|
char FilePath[1024]={0};
|
|
|
|
|
|
|
|
+ if(DoBackup){
|
|
|
|
+ char BackupPath[1024]; sprintf(BackupPath,"%s~",udf->FileName->Ptr);
|
|
|
|
+ laCopyFile(BackupPath,udf->FileName->Ptr);
|
|
|
|
+ }
|
|
|
|
+
|
|
udf->DiskFile = fopen(udf->FileName->Ptr, "wb");
|
|
udf->DiskFile = fopen(udf->FileName->Ptr, "wb");
|
|
if (!udf->DiskFile) return 0;
|
|
if (!udf->DiskFile) return 0;
|
|
|
|
|
|
@@ -3791,7 +3796,7 @@ void laSaveManagedUDF(){
|
|
laRegisterModifications(0,0,0,1);
|
|
laRegisterModifications(0,0,0,1);
|
|
for(laManagedUDF* m=MAIN.ManagedUDFs.pFirst;m;m=m->Item.pNext){
|
|
for(laManagedUDF* m=MAIN.ManagedUDFs.pFirst;m;m=m->Item.pNext){
|
|
if(!m->udf) continue;
|
|
if(!m->udf) continue;
|
|
- if(m->udf->PropsToOperate.pFirst){ laPackUDF(m->udf, 1); }
|
|
|
|
|
|
+ if(m->udf->PropsToOperate.pFirst){ laPackUDF(m->udf, 1, 1); }
|
|
laCloseUDF(m->udf);// just in case
|
|
laCloseUDF(m->udf);// just in case
|
|
}
|
|
}
|
|
}
|
|
}
|