From 5594741acbb6fb88ad840c6fa7ca328ff032497c Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 19 Dec 2000 13:23:54 +0000 Subject: Added fopen() and fclose() leak tracking --- lib/memdebug.c | 16 ++++++++++++++++ lib/memdebug.h | 12 ++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/memdebug.c b/lib/memdebug.c index 1bd945e0d..a92207f64 100644 --- a/lib/memdebug.c +++ b/lib/memdebug.c @@ -151,4 +151,20 @@ int curl_sclose(int sockfd, int line, char *source) return sockfd; } +FILE *curl_fopen(char *file, char *mode, int line, char *source) +{ + FILE *res=(fopen)(file, mode); + fprintf(logfile?logfile:stderr, "FILE %s:%d fopen(\"%s\") = %p\n", + source, line, file, res); + return res; +} + +int curl_fclose(FILE *file, int line, char *source) +{ + int res=(fclose)(file); + fprintf(logfile?logfile:stderr, "FILE %s:%d fclose(%p)\n", + source, line, file); + return res; +} + #endif /* MALLOCDEBUG */ diff --git a/lib/memdebug.h b/lib/memdebug.h index 86271b5b2..58657c35d 100644 --- a/lib/memdebug.h +++ b/lib/memdebug.h @@ -1,4 +1,8 @@ #ifdef MALLOCDEBUG + +#include +#include + /* memory functions */ void *curl_domalloc(size_t size, int line, char *source); void *curl_dorealloc(void *ptr, size_t size, int line, char *source); @@ -12,6 +16,10 @@ int curl_sclose(int sockfd, int, char *); int curl_accept(int s, struct sockaddr *addr, int *addrlen, int line, char *source); +/* FILE functions */ +FILE *curl_fopen(char *file, char *mode, int line, char *source); +int curl_fclose(FILE *file, int line, char *source); + /* Set this symbol on the command-line, recompile all lib-sources */ #define strdup(ptr) curl_dostrdup(ptr, __LINE__, __FILE__) #define malloc(size) curl_domalloc(size, __LINE__, __FILE__) @@ -27,4 +35,8 @@ int curl_accept(int s, struct sockaddr *addr, int *addrlen, #undef sclose #define sclose(sockfd) curl_sclose(sockfd,__LINE__,__FILE__) +#undef fopen +#define fopen(file,mode) curl_fopen(file,mode,__LINE__,__FILE__) +#define fclose(file) curl_fclose(file,__LINE__,__FILE__) + #endif -- cgit v1.2.3