--- /dev/null
+
+
+
+#ifndef SQUID_LEAKFINDER_H
+#define SQUID_LEAKFINDER_H
+
+#if USE_LEAKFINDER
+#define leakAdd(p,l) if (l) l->add(p,__FILE__,__LINE__)
+#define leakTouch(p,l) if (l) l->touch(p,__FILE__,__LINE__)
+#define leakFree(p,l) if (l) l->free(p,__FILE__,__LINE__)
+
+class LeakFinderPtr : public hash_link
+{
+
+public:
+ LeakFinderPtr(void *, const char *, const int);
+ const char *file;
+ int line;
+ time_t when;
+};
+
+class LeakFinder
+{
+
+public:
+ LeakFinder();
+ ~LeakFinder();
+
+ void *add
+ (void *, const char *, const int);
+
+ void *touch(void *, const char *, const int);
+
+ void *free(void *, const char *, const int);
+
+ void dump();
+
+private:
+ static HASHCMP cmp;
+
+ static HASHHASH hash;
+
+ hash_table *table;
+
+ int count;
+
+ time_t last_dump;
+
+};
+
+#else /* USE_LEAKFINDER */
+
+class LeakFinder {};
+
+#define leakAdd(p,l) (void)0
+#define leakTouch(p,l) (void)0
+#define leakFree(p,l) (void)0
+#endif /* USE_LEAKFINDER */
+
+#endif /* SQUID_LEAKFINDER_H */