diff --git a/src/cache.cpp b/src/cache.cpp index a4ba770..2fa76b2 100644 --- a/src/cache.cpp +++ b/src/cache.cpp @@ -496,10 +496,12 @@ bool StatCache::TruncateCache(void) for(stat_cache_t::iterator iter = stat_cache.begin(); iter != stat_cache.end(); ){ stat_cache_entry* entry = iter->second; if(!entry || (0L < entry->notruncate && IsExpireStatCacheTime(entry->cache_date, ExpireTime))){ - stat_cache.erase(iter++); - }else{ - ++iter; + if(entry){ + delete entry; + } + stat_cache.erase(iter); } + ++iter; } } @@ -532,6 +534,9 @@ bool StatCache::TruncateCache(void) stat_cache_t::iterator siter = *iiter; S3FS_PRN_DBG("truncate stat cache[path=%s]", siter->first.c_str()); + if(siter->second){ + delete siter->second; + } stat_cache.erase(siter); } S3FS_MALLOCTRIM(0);