From: Alex Rousskov Date: Tue, 7 May 2013 09:00:37 +0000 (-0600) Subject: Bug 3840: assertion failed 'sde' in UFS cache loading X-Git-Tag: SQUID_3_3_5~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1bb5a4b25676c25ca97ac563292126d25de5294c;p=thirdparty%2Fsquid.git Bug 3840: assertion failed 'sde' in UFS cache loading --- diff --git a/src/fs/ufs/RebuildState.cc b/src/fs/ufs/RebuildState.cc index eeb3d086e4..3bb3cab363 100644 --- a/src/fs/ufs/RebuildState.cc +++ b/src/fs/ufs/RebuildState.cc @@ -420,9 +420,14 @@ Fs::Ufs::RebuildState::undoAdd() added->releaseRequest(); if (added->swap_filen > -1) { - UFSSwapDir *sde = dynamic_cast(INDEXSD(added->swap_dirn)); - assert(sde); - sde->undoAddDiskRestore(added); + SwapDir *someDir = INDEXSD(added->swap_dirn); + assert(someDir); + if (UFSSwapDir *ufsDir = dynamic_cast(someDir)) + ufsDir->undoAddDiskRestore(added); + // else the entry was loaded from and/or is currently in a non-UFS dir + // Thus, there is no use in preserving its disk file (the only purpose + // of undoAddDiskRestore!), even if we could. Instead, we release the + // the entry and [eventually] unlink its disk file or free its slot. } added->release();