@@ -551,11 +551,21 @@ bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
551551 part_settings->Backup_FileName = part_settings->Part ->Backup_Name + " ." + part_settings->Part ->Current_File_System + " .win" ;
552552 if (part_settings->Part ->Backup (part_settings, &tar_fork_pid)) {
553553 bool md5Success = false ;
554+ if (part_settings->adbbackup ) {
555+ md5Success = true ;
556+ }
557+ else
558+ md5Success = Make_MD5 (part_settings);
559+
560+ TWFunc::SetPerformanceMode (false );
554561 if (part_settings->Part ->Has_SubPartition ) {
555562 std::vector<TWPartition*>::iterator subpart;
563+ TWPartition *parentPart = part_settings->Part ;
556564
557565 for (subpart = Partitions.begin (); subpart != Partitions.end (); subpart++) {
558- if ((*subpart)->Can_Be_Backed_Up && (*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == part_settings->Part ->Mount_Point ) {
566+ part_settings->Part = *subpart;
567+ if ((*subpart)->Can_Be_Backed_Up && (*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == parentPart->Mount_Point ) {
568+ part_settings->Backup_FileName = part_settings->Part ->Backup_Name + " ." + part_settings->Part ->Current_File_System + " .win" ;
559569 if (!(*subpart)->Backup (part_settings, &tar_fork_pid)) {
560570 TWFunc::SetPerformanceMode (false );
561571 Clean_Backup_Folder (part_settings->Backup_Folder );
@@ -577,20 +587,14 @@ bool TWPartitionManager::Backup_Partition(PartitionSettings *part_settings) {
577587 time (&stop);
578588 int backup_time = (int ) difftime (stop, start);
579589 LOGINFO (" Partition Backup time: %d\n " , backup_time);
590+
580591 if (part_settings->Part ->Backup_Method == BM_FILES) {
581592 part_settings->file_time += backup_time;
582593 } else {
583594 part_settings->img_time += backup_time;
584595
585596 }
586597
587- if (part_settings->adbbackup ) {
588- md5Success = true ;
589- }
590- else
591- md5Success = Make_MD5 (part_settings);
592- TWFunc::SetPerformanceMode (false );
593-
594598 return md5Success;
595599 } else {
596600 Clean_Backup_Folder (part_settings->Backup_Folder );
@@ -889,10 +893,12 @@ bool TWPartitionManager::Restore_Partition(PartitionSettings *part_settings) {
889893 }
890894 if (part_settings->Part ->Has_SubPartition ) {
891895 std::vector<TWPartition*>::iterator subpart;
896+ TWPartition *parentPart = part_settings->Part ;
892897
893898 for (subpart = Partitions.begin (); subpart != Partitions.end (); subpart++) {
894-
895- if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == part_settings->Part ->Mount_Point ) {
899+ part_settings->Part = *subpart;
900+ if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == parentPart->Mount_Point ) {
901+ part_settings->Part = (*subpart);
896902 if (!(*subpart)->Restore (part_settings)) {
897903 TWFunc::SetPerformanceMode (false );
898904 return false ;
@@ -953,16 +959,19 @@ int TWPartitionManager::Run_Restore(const string& Restore_Name) {
953959 return false ;
954960 }
955961
956- if (check_md5 > 0 && !part_settings.Part ->Check_MD5 (Restore_Name ))
962+ if (check_md5 > 0 && !part_settings.Part ->Check_MD5 (&part_settings ))
957963 return false ;
958964 part_settings.partition_count ++;
959965 part_settings.total_restore_size += part_settings.Part ->Get_Restore_Size (&part_settings);
960966 if (part_settings.Part ->Has_SubPartition ) {
967+ TWPartition *parentPart = part_settings.Part ;
961968 std::vector<TWPartition*>::iterator subpart;
962969
963970 for (subpart = Partitions.begin (); subpart != Partitions.end (); subpart++) {
964- if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == part_settings.Part ->Mount_Point ) {
965- if (check_md5 > 0 && !(*subpart)->Check_MD5 (Restore_Name))
971+ part_settings.Backup_FileName = parentPart->Backup_Name + " ." + parentPart->Current_File_System + " .win" ;
972+ part_settings.Part = *subpart;
973+ if ((*subpart)->Is_SubPartition && (*subpart)->SubPartition_Of == parentPart->Mount_Point ) {
974+ if (check_md5 > 0 && !(*subpart)->Check_MD5 (&part_settings))
966975 return false ;
967976 part_settings.total_restore_size += (*subpart)->Get_Restore_Size (&part_settings);
968977 }
0 commit comments