]> sjero.net Git - wget/blobdiff - src/wget.h
[svn] Committed memory debugging stuff.
[wget] / src / wget.h
index 718ee0b169bdad70fc73f863a5f6dcdd18d112da..b3c9ca053797b8a88665a14d039c340704054c2c 100644 (file)
@@ -98,9 +98,31 @@ void debug_logprintf ();
 void logputs PARAMS ((enum log_options, const char *));
 
 /* Defined in `utils.c', but used literally everywhere.  */
-void *xmalloc PARAMS ((size_t));
-void *xrealloc PARAMS ((void *, size_t));
-char *xstrdup PARAMS ((const char *));
+#ifndef DEBUG_MALLOC
+
+#define xmalloc  xmalloc_real
+#define xfree    xfree_real
+#define xrealloc xrealloc_real
+#define xstrdup  xstrdup_real
+
+void *xmalloc_real PARAMS ((size_t));
+void xfree_real PARAMS ((void *));
+void *xrealloc_real PARAMS ((void *, size_t));
+char *xstrdup_real PARAMS ((const char *));
+
+#else  /* DEBUG_MALLOC */
+
+#define xmalloc(s)     xmalloc_debug (s, __FILE__, __LINE__)
+#define xfree(p)       xfree_debug (p, __FILE__, __LINE__)
+#define xrealloc(p, s) xrealloc_debug (p, s, __FILE__, __LINE__)
+#define xstrdup(p)     xstrdup_debug (p, __FILE__, __LINE__)
+
+void *xmalloc_debug PARAMS ((size_t, const char *, int));
+void xfree_debug PARAMS ((void *, const char *, int));
+void *xrealloc_debug PARAMS ((void *, size_t, const char *, int));
+char *xstrdup_debug PARAMS ((const char *, const char *, int));
+
+#endif /* DEBUG_MALLOC */
 
 /* #### Find a better place for this.  */
 /* The log file to which Wget writes to after HUP.  */
@@ -197,7 +219,7 @@ char *xstrdup PARAMS ((const char *));
 } while (0)
 
 /* Free FOO if it is non-NULL.  */
-#define FREE_MAYBE(foo) do { if (foo) free (foo); } while (0)
+#define FREE_MAYBE(foo) do { if (foo) xfree (foo); } while (0)
 
 /* #### Hack: OPTIONS_DEFINED_HERE is defined in main.c.  */
 /* [Is this weird hack really necessary on any compilers?  No ANSI C compiler