]> git.ipfire.org Git - thirdparty/curl.git/commitdiff
Gisle Vanem's added support calloc()-debugging and outputting mode for
authorDaniel Stenberg <daniel@haxx.se>
Thu, 26 Feb 2004 14:52:51 +0000 (14:52 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Thu, 26 Feb 2004 14:52:51 +0000 (14:52 +0000)
fopen() as well.

lib/memdebug.c
lib/memdebug.h

index 1eeb5c93e2982461b93107104518077a31521640..a51e1f1d1696a838325f661c991e28afca7d0ef3 100644 (file)
@@ -130,6 +130,32 @@ void *curl_domalloc(size_t wantedsize, int line, const char *source)
   return mem->mem;
 }
 
+void *curl_docalloc(size_t wanted_elements, size_t wanted_size,
+                    int line, const char *source)
+{
+  struct memdebug *mem;
+  size_t size, user_size;
+
+  if(countcheck("calloc", line, source))
+    return NULL;
+
+  /* alloc at least 64 bytes */
+  user_size = wanted_size * wanted_elements;
+  size = sizeof(struct memdebug) + user_size;
+
+  mem = (struct memdebug *)(malloc)(size);
+  if(mem) {
+    /* fill memory with zeroes */
+    memset(mem->mem, 0, user_size);
+    mem->size = user_size;
+  }
+
+  if(logfile && source)
+    fprintf(logfile, "MEM %s:%d calloc(%u,%u) = %p\n",
+            source, line, wanted_elements, wanted_size, mem->mem);
+  return mem->mem;
+}
+
 char *curl_dostrdup(const char *str, int line, const char *source)
 {
   char *mem;
@@ -235,8 +261,8 @@ FILE *curl_fopen(const char *file, const char *mode,
 {
   FILE *res=(fopen)(file, mode);
   if(logfile)
-    fprintf(logfile, "FILE %s:%d fopen(\"%s\") = %p\n",
-            source, line, file, res);
+    fprintf(logfile, "FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
+            source, line, file, mode, res);
   return res;
 }
 
index 2bf75e58d6324974e85c3d2f52840aa187028d4a..40ba0803381632e7fb4f12ca2031abbcc41a4e67 100644 (file)
@@ -49,6 +49,7 @@ extern FILE *logfile;
 
 /* memory functions */
 void *curl_domalloc(size_t size, int line, const char *source);
+void *curl_docalloc(size_t elements, size_t size, int line, const char *source);
 void *curl_dorealloc(void *ptr, size_t size, int line, const char *source);
 void curl_dofree(void *ptr, int line, const char *source);
 char *curl_dostrdup(const char *str, int line, const char *source);
@@ -72,6 +73,7 @@ int curl_fclose(FILE *file, int line, const char *source);
 #undef strdup
 #define strdup(ptr) curl_dostrdup(ptr, __LINE__, __FILE__)
 #define malloc(size) curl_domalloc(size, __LINE__, __FILE__)
+#define calloc(nbelem,size) curl_docalloc(nbelem, size, __LINE__, __FILE__)
 #define realloc(ptr,size) curl_dorealloc(ptr, size, __LINE__, __FILE__)
 #define free(ptr) curl_dofree(ptr, __LINE__, __FILE__)