Cache: fix bugs and don’t overflow