diff --git a/tsk/fs/yaffs.cpp b/tsk/fs/yaffs.cpp index d64504f1c44c2ba1a2475700892b271aa0fe055d..66cb60489a309c9c602ea470bbafdbd9650617cc 100644 --- a/tsk/fs/yaffs.cpp +++ b/tsk/fs/yaffs.cpp @@ -634,20 +634,22 @@ static void static void yaffscache_chunks_free(YAFFSFS_INFO *yfs) { - // Free the YaffsCacheChunks in each ChunkGroup - std::map<unsigned int,YaffsCacheChunkGroup>::iterator iter; - for( iter = yfs->chunkMap->begin(); iter != yfs->chunkMap->end(); ++iter ) { - YaffsCacheChunk *chunk = yfs->chunkMap->operator[](iter->first).cache_chunks_head; - while(chunk != NULL) { - YaffsCacheChunk *to_free = chunk; - chunk = chunk->ycc_next; - free(to_free); + if(yfs->chunkMap != NULL){ + // Free the YaffsCacheChunks in each ChunkGroup + std::map<unsigned int,YaffsCacheChunkGroup>::iterator iter; + for( iter = yfs->chunkMap->begin(); iter != yfs->chunkMap->end(); ++iter ) { + YaffsCacheChunk *chunk = yfs->chunkMap->operator[](iter->first).cache_chunks_head; + while(chunk != NULL) { + YaffsCacheChunk *to_free = chunk; + chunk = chunk->ycc_next; + free(to_free); + } } - } - // Free the map - yfs->chunkMap->clear(); - delete yfs->chunkMap; + // Free the map + yfs->chunkMap->clear(); + delete yfs->chunkMap; + } } @@ -2459,7 +2461,10 @@ static void // Walk and free the cache structures yaffscache_objects_free(yfs); + fprintf(stderr, "After objects free\n"); + fflush(stderr); yaffscache_chunks_free(yfs); + fprintf(stderr, "After chunks free\n"); //tsk_deinit_lock(&yaffsfs->lock);