X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Frrd_error.c;h=9f46a625df32ca8005566b81474e5f21817ca408;hb=5fc7ff89bdbced9c593c566fea9840a269935dcd;hp=33d7c2f0c849abbb37d8046cfc197751d5ccf8f4;hpb=298b318acaf1147474ab9e97cac37c3608660efd;p=rrdtool.git diff --git a/src/rrd_error.c b/src/rrd_error.c index 33d7c2f..9f46a62 100644 --- a/src/rrd_error.c +++ b/src/rrd_error.c @@ -1,10 +1,14 @@ /***************************************************************************** - * RRDtool 1.1.x Copyright Tobias Oetiker, 1997 - 2002 + * RRDtool 1.2.23 Copyright by Tobi Oetiker, 1997-2007 ***************************************************************************** * rrd_error.c Common Header File ***************************************************************************** * $Id$ * $Log$ + * Revision 1.4 2003/02/22 21:57:03 oetiker + * a patch to avoid a memory leak and a Makefile.am patch to + * distribute all required source files -- Peter Stamfest + * * Revision 1.3 2003/02/13 07:05:27 oetiker * Find attached the patch I promised to send to you. Please note that there * are three new source files (src/rrd_is_thread_safe.h, src/rrd_thread_safe.c @@ -76,6 +80,7 @@ rrd_set_error_r(struct rrd_context *rrd_ctx, char *fmt, ...) va_start(argp, fmt); #ifdef HAVE_VSNPRINTF vsnprintf((char *)rrd_ctx->rrd_error, rrd_ctx->len, fmt, argp); + rrd_ctx->rrd_error[rrd_ctx->len]='\0'; #else vsprintf((char *)rrd_ctx->rrd_error, fmt, argp); #endif @@ -106,9 +111,8 @@ rrd_new_context(void) { (struct rrd_context *) malloc(sizeof(struct rrd_context)); if (rrd_ctx) { - rrd_ctx->len = 0; - rrd_ctx->rrd_error = malloc(MAXLEN); - rrd_ctx->lib_errstr = malloc(ERRBUFLEN); + rrd_ctx->rrd_error = malloc(MAXLEN+10); + rrd_ctx->lib_errstr = malloc(ERRBUFLEN+10); if (rrd_ctx->rrd_error && rrd_ctx->lib_errstr) { *rrd_ctx->rrd_error = 0; *rrd_ctx->lib_errstr = 0; @@ -127,6 +131,7 @@ void rrd_free_context(struct rrd_context *rrd_ctx) { if (rrd_ctx) { if (rrd_ctx->rrd_error) free(rrd_ctx->rrd_error); + if (rrd_ctx->lib_errstr) free(rrd_ctx->lib_errstr); free(rrd_ctx); } }