mirror of
https://github.com/moparisthebest/curl
synced 2024-12-22 08:08:50 -05:00
Gisle Vanem's added support calloc()-debugging and outputting mode for
fopen() as well.
This commit is contained in:
parent
7d8cd5906c
commit
07de0ff0ff
@ -130,6 +130,32 @@ void *curl_domalloc(size_t wantedsize, int line, const char *source)
|
|||||||
return mem->mem;
|
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 *curl_dostrdup(const char *str, int line, const char *source)
|
||||||
{
|
{
|
||||||
char *mem;
|
char *mem;
|
||||||
@ -235,8 +261,8 @@ FILE *curl_fopen(const char *file, const char *mode,
|
|||||||
{
|
{
|
||||||
FILE *res=(fopen)(file, mode);
|
FILE *res=(fopen)(file, mode);
|
||||||
if(logfile)
|
if(logfile)
|
||||||
fprintf(logfile, "FILE %s:%d fopen(\"%s\") = %p\n",
|
fprintf(logfile, "FILE %s:%d fopen(\"%s\",\"%s\") = %p\n",
|
||||||
source, line, file, res);
|
source, line, file, mode, res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ extern FILE *logfile;
|
|||||||
|
|
||||||
/* memory functions */
|
/* memory functions */
|
||||||
void *curl_domalloc(size_t size, int line, const char *source);
|
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_dorealloc(void *ptr, size_t size, int line, const char *source);
|
||||||
void curl_dofree(void *ptr, 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);
|
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
|
#undef strdup
|
||||||
#define strdup(ptr) curl_dostrdup(ptr, __LINE__, __FILE__)
|
#define strdup(ptr) curl_dostrdup(ptr, __LINE__, __FILE__)
|
||||||
#define malloc(size) curl_domalloc(size, __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 realloc(ptr,size) curl_dorealloc(ptr, size, __LINE__, __FILE__)
|
||||||
#define free(ptr) curl_dofree(ptr, __LINE__, __FILE__)
|
#define free(ptr) curl_dofree(ptr, __LINE__, __FILE__)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user