Clone
ixen <ixen@copyhandler.com>
committed
on 28 Jan 08
Bugfix: crash at startup with specific files (closes [#296]).
LoggerImprovements + 5 more
src/ch/Structs.cpp (+12 -7)
443 443         m_cs.Lock();
444 444         m_nAll=0;
445 445
446 446         int nSize=m_files.GetSize();
447 447         CFileInfo* pFiles=m_files.GetData();
448 448
449 449         for (int i=0;i<nSize;i++)
450 450                 m_nAll+=pFiles[i].GetLength64();
451 451
452 452         m_nAll*=m_ucCopies;
453 453
454 454         m_cs.Unlock();
455 455 }
456 456
457 457 void CTask::CalcProcessedSize()
458 458 {
459 459         m_cs.Lock();
460 460         m_nProcessed=0;
461 461
462 462         CFileInfo* pFiles=m_files.GetData();
463  
  463         if(pFiles)
  464         {
464 465                 // count all from previous passes
  466                 if(m_ucCopies)
465 467                         m_nProcessed+=m_ucCurrentCopy*(m_nAll/m_ucCopies);
  468                 else
  469                         m_nProcessed+=m_ucCurrentCopy*m_nAll;
466 470
467 471                 for (int i=0;i<m_nCurrentIndex;i++)
468 472                         m_nProcessed+=pFiles[i].GetLength64();
469 473                 IncreaseProcessedTasksSize(m_nProcessed);
  474         }
470 475
471 476         m_cs.Unlock();
472 477 }
473 478
474 479 // m_pnTasksProcessed
475 480 void CTask::IncreaseProcessedTasksSize(__int64 nSize)
476 481 {
477 482 //      m_cs.Lock();
478 483         m_pcs->Lock();
479 484         (*m_pnTasksProcessed)+=nSize;
480 485         m_pcs->Unlock();
481 486 //      m_cs.Unlock();
482 487 }
483 488
484 489 void CTask::DecreaseProcessedTasksSize(__int64 nSize)
485 490 {
486 491 //      m_cs.Lock();
487 492         m_pcs->Lock();
488 493         (*m_pnTasksProcessed)-=nSize;
489 494         m_pcs->Unlock();