Added memory debug wrappers, killed all detected memory leaks, Daniel
diff --git a/xmlmemory.h b/xmlmemory.h
new file mode 100644
index 0000000..d28b526
--- /dev/null
+++ b/xmlmemory.h
@@ -0,0 +1,66 @@
+/*
+ * memory.h: interface for the memory allocation debug.
+ *
+ * Daniel.Veillard@w3.org
+ */
+
+
+#ifndef _DEBUG_MEMORY_ALLOC_
+#define _DEBUG_MEMORY_ALLOC_
+
+#define NO_DEBUG_MEMORY
+
+#ifdef NO_DEBUG_MEMORY
+#ifdef HAVE_MALLOC_H
+#include <malloc.h>
+#endif
+
+#define xmlFree(x) free((x))
+#define xmlMalloc(x) malloc(x)
+#define xmlRealloc(p, x) realloc((p), (x))
+#define xmlMemStrdup(x) strdup((x))
+#define xmlInitMemory()
+#define xmlMemUsed()
+#define xmlInitMemory()
+#define xmlMemoryDump()
+#define xmlMemDisplay(x)
+
+#else /* ! NO_DEBUG_MEMORY */
+#include <stdio.h>
+
+/* #define DEBUG_MEMORY */ /* */
+
+#define DEBUG_MEMORY_LOCATION
+
+#ifdef DEBUG
+#ifndef DEBUG_MEMORY
+#define DEBUG_MEMORY
+#endif
+#endif
+
+#define MEM_LIST /* keep a list of all the allocated memory blocks */
+
+int	xmlInitMemory	(void);
+void *	xmlMalloc	(int size);
+void *	xmlRealloc	(void *ptr,
+			 int size);
+void	xmlFree		(void *ptr);
+char *	xmlMemStrdup	(const char *str);
+int	xmlMemUsed	(void);
+void	xmlMemDisplay	(FILE *fp);
+void	xmlMemoryDump	(void);
+int	xmlInitMemory	(void);
+
+#ifdef DEBUG_MEMORY_LOCATION
+#define xmlMalloc(x) xmlMallocLoc((x), __FILE__, __LINE__)
+#define xmlRealloc(p, x) xmlReallocLoc((p), (x), __FILE__, __LINE__)
+#define xmlMemStrdup(x) xmlMemStrdupLoc((x), __FILE__, __LINE__)
+
+extern void *	xmlMallocLoc(int size, const char *file, int line);
+extern void *	xmlReallocLoc(void *ptr,int size, const char *file, int line);
+extern char *	xmlMemStrdupLoc(const char *str, const char *file, int line);
+#endif /* DEBUG_MEMORY_LOCATION */
+#endif /* ! NO_DEBUG_MEMORY */
+
+#endif  /* _DEBUG_MEMORY_ALLOC_ */
+