lib: fix memory logging

* lib/memory.h
  * mtype_zcalloc(): correct function prototype
  * XFREE(): make both definitions consistent in setting
    the pointer to NULL after freeing the memory

These changes will only have an effect if MEMORY_LOG is defined
(it is not by default).
diff --git a/lib/memory.h b/lib/memory.h
index 42eb5ca..a7eddce 100644
--- a/lib/memory.h
+++ b/lib/memory.h
@@ -46,7 +46,10 @@
 #define XREALLOC(mtype, ptr, size)  \
   mtype_zrealloc (__FILE__, __LINE__, (mtype), (ptr), (size))
 #define XFREE(mtype, ptr) \
-  mtype_zfree (__FILE__, __LINE__, (mtype), (ptr))
+  do { \
+    mtype_zfree (__FILE__, __LINE__, (mtype), (ptr)); \
+    ptr = NULL; } \
+  while (0)
 #define XSTRDUP(mtype, str) \
   mtype_zstrdup (__FILE__, __LINE__, (mtype), (str))
 #else
@@ -69,8 +72,7 @@
 
 extern void *mtype_zmalloc (const char *file, int line, int type, size_t size);
 
-extern void *mtype_zcalloc (const char *file, int line, int type, 
-                            size_t num, size_t size);
+extern void *mtype_zcalloc (const char *file, int line, int type, size_t size);
 
 extern void *mtype_zrealloc (const char *file, int line, int type, void *ptr,
 		             size_t size);