diff --git a/source/libs/tdb/src/db/tdbPCache.c b/source/libs/tdb/src/db/tdbPCache.c index bacf41357c238344033aa863a5d0540451caf750..b6d1f95c0e6a44be244f7344b40b707481d48321 100644 --- a/source/libs/tdb/src/db/tdbPCache.c +++ b/source/libs/tdb/src/db/tdbPCache.c @@ -139,8 +139,11 @@ static int tdbPCacheAlterImpl(SPCache *pCache, int32_t nPage) { int32_t iPage = (*ppPage)->id; if (iPage >= nPage) { + SPage *pPage = *ppPage; + *ppPage = pPage->pFreeNext; + pCache->aPage[pPage->id] = NULL; + tdbPageDestroy(pPage, tdbDefaultFree, NULL); pCache->nFree--; - *ppPage = (*ppPage)->pFreeNext; } else { ppPage = &(*ppPage)->pFreeNext; }