summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--template.c12
2 files changed, 12 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 4d7e4e97..3a1737d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -17,6 +17,9 @@ Version 6.5.1 [devel] 2012-08-??
used \x as escape where x was any character (e.g. "\n" meant "n" and NOT
LF). This also means there is some incompatibility to v5 for well-know
sequences. Better break it now than later.
+- bugfix: small memory leaks in template() statements
+ these were one-time memory leaks during startup, so they did NOT grow
+ during runtime
---------------------------------------------------------------------------
Version 6.5.0 [devel] 2012-08-28
- imrelp now supports non-cancel thread termination
diff --git a/template.c b/template.c
index 27b508c6..83dd6e85 100644
--- a/template.c
+++ b/template.c
@@ -1240,7 +1240,7 @@ createConstantTpe(struct template *pTpl, struct cnfobj *o)
struct templateEntry *pTpe;
es_str_t *value;
int i;
- struct cnfparamvals *pvals;
+ struct cnfparamvals *pvals = NULL;
uchar *outname = NULL;
DEFiRet;
@@ -1274,6 +1274,8 @@ createConstantTpe(struct template *pTpl, struct cnfobj *o)
pTpe->data.constant.pConstant = (uchar*)es_str2cstr(value, NULL);
finalize_it:
+ if(pvals != NULL)
+ cnfparamvalsDestruct(pvals, &pblkConstant);
RETiRet;
}
@@ -1294,7 +1296,7 @@ createPropertyTpe(struct template *pTpl, struct cnfobj *o)
int re_matchToUse = 0;
int re_submatchToUse = 0;
char *re_expr = NULL;
- struct cnfparamvals *pvals;
+ struct cnfparamvals *pvals = NULL;
enum {F_NONE, F_CSV, F_JSON, F_JSONF} formatType = F_NONE;
enum {CC_NONE, CC_ESCAPE, CC_SPACE, CC_DROP} controlchr = CC_NONE;
enum {SP_NONE, SP_DROP, SP_REPLACE} secpath = SP_NONE;
@@ -1563,6 +1565,8 @@ createPropertyTpe(struct template *pTpl, struct cnfobj *o)
}
finalize_it:
+ if(pvals != NULL)
+ cnfparamvalsDestruct(pvals, &pblkProperty);
RETiRet;
}
@@ -1599,7 +1603,7 @@ rsRetVal
tplProcessCnf(struct cnfobj *o)
{
struct template *pTpl = NULL;
- struct cnfparamvals *pvals;
+ struct cnfparamvals *pvals = NULL;
int lenName;
char *name = NULL;
uchar *tplStr = NULL;
@@ -1746,6 +1750,8 @@ tplProcessCnf(struct cnfobj *o)
pTpl->optFormatEscape = JSON_ESCAPE;
finalize_it:
+ if(pvals != NULL)
+ cnfparamvalsDestruct(pvals, &pblk);
if(iRet != RS_RET_OK) {
if(pTpl != NULL) {
/* we simply make the template defunct in this case by setting