summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--grammar/lexer.l2
-rw-r--r--grammar/rainerscript.c3
-rw-r--r--runtime/msg.c4
-rw-r--r--runtime/msg.h5
-rw-r--r--runtime/ruleset.c2
5 files changed, 5 insertions, 11 deletions
diff --git a/grammar/lexer.l b/grammar/lexer.l
index d254d47e..e024526a 100644
--- a/grammar/lexer.l
+++ b/grammar/lexer.l
@@ -129,7 +129,7 @@ int fileno(FILE *stream);
<EXPR>0[0-7]+ | /* octal number */
<EXPR>0x[0-7a-f] | /* hex number, following rule is dec; strtoll handles all! */
<EXPR>([1-9][0-9]*|0) { yylval.n = strtoll(yytext, NULL, 0); return NUMBER; }
-<EXPR>\$[$!./]{0,1}[a-z][!a-z0-9\-_\.]* { yylval.s = strdup(yytext); return VAR; }
+<EXPR>\$[$!./]{0,1}[a-z][!a-z0-9\-_\.]* { yylval.s = strdup(yytext+1); return VAR; }
<EXPR>\'([^'\\]|\\['"\\$bntr]|\\x[0-9a-f][0-9a-f]|\\[0-7][0-7][0-7])*\' {
yytext[yyleng-1] = '\0';
unescapeStr((uchar*)yytext+1, yyleng-2);
diff --git a/grammar/rainerscript.c b/grammar/rainerscript.c
index 774e033f..1b9cda96 100644
--- a/grammar/rainerscript.c
+++ b/grammar/rainerscript.c
@@ -2554,8 +2554,7 @@ cnfvarNew(char *name)
struct cnfvar *var;
if((var = malloc(sizeof(struct cnfvar))) != NULL) {
var->nodetype = 'V';
- var->name = strdup(name+1);
- free(name);
+ var->name = name;
msgPropDescrFill(&var->prop, (uchar*)var->name, strlen(var->name));
}
return var;
diff --git a/runtime/msg.c b/runtime/msg.c
index 3690a8b4..c9ac507e 100644
--- a/runtime/msg.c
+++ b/runtime/msg.c
@@ -4068,9 +4068,9 @@ msgSetJSONFromVar(msg_t *pMsg, uchar *varname, struct var *v)
ABORT_FINALIZE(RS_RET_ERR);
}
/* we always know strlen(varname) > 2 */
- if(varname[1] == '!')
+ if(varname[0] == '!')
msgAddJSONObj(pMsg, varname+1, json, &pMsg->json);
- else if(varname[1] == '.')
+ else if(varname[0] == '.')
msgAddJSONObj(pMsg, varname+1, json, &pMsg->localvars);
else { /* global - '/' */
pthread_rwlock_wrlock(&glblVars_rwlock);
diff --git a/runtime/msg.h b/runtime/msg.h
index fd890822..a2392a20 100644
--- a/runtime/msg.h
+++ b/runtime/msg.h
@@ -217,11 +217,6 @@ rsRetVal jsonFind(struct json_object *jroot, msgPropDescr_t *pProp, struct json_
rsRetVal msgPropDescrFill(msgPropDescr_t *pProp, uchar *name, int nameLen);
void msgPropDescrDestruct(msgPropDescr_t *pProp);
-static inline rsRetVal
-msgUnsetJSON(msg_t *pMsg, uchar *varname) {
- return msgDelJSON(pMsg, varname+1);
-}
-
static inline int
msgGetProtocolVersion(msg_t *pM)
{
diff --git a/runtime/ruleset.c b/runtime/ruleset.c
index b7055eac..15e9e5ea 100644
--- a/runtime/ruleset.c
+++ b/runtime/ruleset.c
@@ -261,7 +261,7 @@ execUnset(struct cnfstmt *stmt, batch_t *pBatch, sbool *active)
for(i = 0 ; i < batchNumMsgs(pBatch) && !*(pBatch->pbShutdownImmediate) ; ++i) {
if( pBatch->eltState[i] != BATCH_STATE_DISC
&& (active == NULL || active[i])) {
- msgUnsetJSON(pBatch->pElem[i].pMsg, stmt->d.s_unset.varname);
+ msgDelJSON(pBatch->pElem[i].pMsg, stmt->d.s_unset.varname);
}
}
RETiRet;