From: Alex Rousskov Date: Mon, 6 May 2013 12:19:39 +0000 (-0600) Subject: Bug 3840: assertion failed 'sde' in UFS cache loading X-Git-Tag: SQUID_3_4_0_1~167 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=128122d146e8ed6d7fd4ff189e3d0bd6008e81a2;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 b3c2d0d090..d327c88c75 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();