Changeset 1313 for trunk/dll/worker.c


Ignore:
Timestamp:
Dec 3, 2008, 3:59:19 PM (17 years ago)
Author:
Gregg Young
Message:

Improved fix to delete race condition with container updates (Ticket 304)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/dll/worker.c

    r1312 r1313  
    16051605                                 &fsa, (ULONG) sizeof(FILESTATUS3));
    16061606                if (fsa.attrFile & FILE_DIRECTORY) {
    1607                   //priority_bumped();
    1608                   DosRequestMutexSem(hmtxDeleteDir, SEM_INDEFINITE_WAIT);
    16091607                  sprintf(prompt,
    16101608                          GetPString(IDS_DELETINGTEXT), wk->li->list[x]);
     1609                  DosRequestMutexSem(hmtxFM2Delete, SEM_INDEFINITE_WAIT); // Prevent race 12-3-08 GKY
    16111610                  AddNote(prompt);
    16121611                  error = (APIRET) wipeallf("%s%s*",
     
    16221621                  else
    16231622                    DosDeleteDir(wk->li->list[x]);
    1624                   DosReleaseMutexSem(hmtxDeleteDir);
    1625                   //priority_normal();
     1623                  DosReleaseMutexSem(hmtxFM2Delete);
    16261624                }
    16271625                else {
     
    16461644                        error = WinMoveObject(hObjectofObject, hObjectdest, 0);
    16471645                    }
    1648                     else
    1649                       error = DosDelete(wk->li->list[x]);
     1646                    else {
     1647                      DosRequestMutexSem(hmtxFM2Delete, SEM_INDEFINITE_WAIT); // Prevent race 12-3-08 GKY
     1648                      error = DosDelete(wk->li->list[x]);
     1649                      DosReleaseMutexSem(hmtxFM2Delete);
     1650                    }
    16501651                  }
    1651                   else
    1652                     error = DosForceDelete(wk->li->list[x]);
     1652                  else {
     1653                    DosRequestMutexSem(hmtxFM2Delete, SEM_INDEFINITE_WAIT); // Prevent race 12-3-08 GKY
     1654                    error = DosForceDelete(wk->li->list[x]);
     1655                    DosReleaseMutexSem(hmtxFM2Delete);
     1656                  }
    16531657                  if (error) {
    16541658                    DosError(FERR_DISABLEHARDERR);
     
    16701674                          error = WinMoveObject(hObjectofObject, hObjectdest, 0);
    16711675                      }
    1672                       else
    1673                         error = DosDelete(wk->li->list[x]);
     1676                      else {
     1677                        DosRequestMutexSem(hmtxFM2Delete, SEM_INDEFINITE_WAIT); // Prevent race 12-3-08 GKY
     1678                        error = DosDelete(wk->li->list[x]);
     1679                        DosReleaseMutexSem(hmtxFM2Delete);
     1680                      }
    16741681                    }
    1675                     else
    1676                       error = DosForceDelete(wk->li->list[x]);
     1682                    else {
     1683                      DosRequestMutexSem(hmtxFM2Delete, SEM_INDEFINITE_WAIT); // Prevent race 12-3-08 GKY
     1684                      error = DosForceDelete(wk->li->list[x]);
     1685                      DosReleaseMutexSem(hmtxFM2Delete);
     1686                    }
    16771687                  }
    16781688                }
     
    16991709                  AddNote(prompt);
    17001710                }
    1701                 if ((fSyncUpdates  && !(fsa.attrFile & FILE_DIRECTORY)) ||
     1711                if (fSyncUpdates ||
    17021712                    AddToList(wk->li->list[x], &files, &numfiles, &numalloc))
    17031713                  Broadcast(hab2,
Note: See TracChangeset for help on using the changeset viewer.