#ifndef HOARD_IGNOREINVALIDFREE_H
#define HOARD_IGNOREINVALIDFREE_H
namespace Hoard {
template <class SuperHeap>
class IgnoreInvalidFree : public SuperHeap {
public:
INLINE void free (void * ptr) {
if (ptr) {
typename SuperHeap::SuperblockType * s = SuperHeap::getSuperblock (ptr);
if (!s || (!s->isValidSuperblock())) {
return;
}
SuperHeap::free (ptr);
}
}
INLINE size_t getSize (void * ptr) {
if (ptr) {
typename SuperHeap::SuperblockType * s = SuperHeap::getSuperblock (ptr);
if (!s || (!s->isValidSuperblock())) {
return 0;
}
return SuperHeap::getSize (ptr);
} else {
return 0;
}
}
};
}
#endif