summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/msg.c8
-rw-r--r--runtime/rsconf.c4
2 files changed, 8 insertions, 4 deletions
diff --git a/runtime/msg.c b/runtime/msg.c
index 87213bb7..5517dee8 100644
--- a/runtime/msg.c
+++ b/runtime/msg.c
@@ -551,6 +551,7 @@ propNameStrToID(uchar *pName, propid_t *pPropID)
} else if(!strcmp((char*) pName, "$uptime")) {
*pPropID = PROP_SYS_UPTIME;
} else {
+ DBGPRINTF("PROP_INVALID for name '%s'\n", pName);
*pPropID = PROP_INVALID;
iRet = RS_RET_VAR_NOT_FOUND;
}
@@ -3774,13 +3775,16 @@ msgGetMsgVarNew(msg_t *pThis, uchar *name)
propid_t propid;
unsigned short bMustBeFreed = 0;
es_str_t *estr;
+ es_str_t *propName;
ISOBJ_TYPE_assert(pThis, msg);
/* always call MsgGetProp() without a template specifier */
/* TODO: optimize propNameToID() call -- rgerhards, 2009-06-26 */
propNameStrToID(name, &propid);
- pszProp = (uchar*) MsgGetProp(pThis, NULL, propid, NULL, &propLen, &bMustBeFreed, NULL);
+ propName = es_newStrFromCStr((char*)name+1, ustrlen(name)-1); // TODO: optimize!
+ pszProp = (uchar*) MsgGetProp(pThis, NULL, propid, propName, &propLen, &bMustBeFreed, NULL);
+ es_deleteStr(propName);
estr = es_newStrFromCStr((char*)pszProp, propLen);
if(bMustBeFreed)
@@ -4183,7 +4187,7 @@ msgSetJSONFromVar(msg_t *pMsg, uchar *varname, struct var *v)
/* we always know strlen(varname) > 2 */
if(varname[1] == '!')
msgAddJSONObj(pMsg, varname+1, json, &pMsg->json);
- if(varname[1] == '.')
+ else if(varname[1] == '.')
msgAddJSONObj(pMsg, varname+1, json, &pMsg->localvars);
else /* global - '/' */
msgAddJSONObj(pMsg, varname+1, json, &global_var_root);
diff --git a/runtime/rsconf.c b/runtime/rsconf.c
index b13e5cc7..ffe0d1d1 100644
--- a/runtime/rsconf.c
+++ b/runtime/rsconf.c
@@ -486,10 +486,10 @@ cnfGetVar(char *name, void *usrptr)
else if(name[1] == '!')
estr = msgGetCEEVarNew((msg_t*) usrptr, name+2);
else
- estr = msgGetMsgVarNew((msg_t*) usrptr, (uchar*)name+1);
+ estr = msgGetMsgVarNew((msg_t*) usrptr, (uchar*)name);
} else { /* if this happens, we have a program logic error */
estr = es_newStrFromCStr("err: var must start with $",
- strlen("err: var must start with $"));
+ sizeof("err: var must start with $")-1);
}
if(Debug) {
char *s;