diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-25 15:39:56 +0000 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-25 15:39:56 +0000 |
commit | ee7a17a6792e178541d0504fb6ceaae6d625e463 (patch) | |
tree | 09af4907d5a255730ecd36e3373c0f4d223c68c9 /var.c | |
parent | 50ddd3fd7de672a2fa2df67adb27401cc38ce38c (diff) | |
download | rsyslog-ee7a17a6792e178541d0504fb6ceaae6d625e463.tar.gz rsyslog-ee7a17a6792e178541d0504fb6ceaae6d625e463.tar.xz rsyslog-ee7a17a6792e178541d0504fb6ceaae6d625e463.zip |
fixed segfault when pure string values were tried to be added
Diffstat (limited to 'var.c')
-rw-r--r-- | var.c | 13 |
1 files changed, 8 insertions, 5 deletions
@@ -178,10 +178,7 @@ finalize_it: } -/* check if the provided object can be converted to a number. Uses - * non-standard calling conventions because it makes an awful lot of sense. - * Returns 1 if conversion is possibe and 0 if not. If 1 is returned, a - * conversion request on the unchanged object is guaranteed to succeed. +/* Change the provided object to be of type number. * rgerhards, 2008-02-22 */ rsRetVal @@ -193,7 +190,13 @@ ConvToNumber(var_t *pThis) if(pThis->varType == VARTYPE_NUMBER) { FINALIZE; } else if(pThis->varType == VARTYPE_STR) { - CHKiRet(rsCStrConvertToNumber(pThis->val.pStr, &n)); + iRet = rsCStrConvertToNumber(pThis->val.pStr, &n); + if(iRet == RS_RET_NOT_A_NUMBER) { + n = 0; /* TODO: isn't it better to pass the error? */ + } else if (iRet != RS_RET_OK) { + FINALIZE; + } + pThis->val.num = n; pThis->varType = VARTYPE_NUMBER; } |