diff options
author | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2011-10-07 20:57:17 +0000 |
---|---|---|
committer | martin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220> | 2011-10-07 20:57:17 +0000 |
commit | ebf7ceac13665a3f2bf246126efb3dc333852326 (patch) | |
tree | f7c3f466275751a7e6c74c3553ed49848f33749d /navit/command.c | |
parent | 2bbeba44ef20a51e63482bf38a15cdf76c5cec50 (diff) | |
download | navit-svn-ebf7ceac13665a3f2bf246126efb3dc333852326.tar.gz |
Fix:Core:Changed command new working, expand attributes if necessary
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@4833 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/command.c')
-rw-r--r-- | navit/command.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/navit/command.c b/navit/command.c index be0463c7..9beac995 100644 --- a/navit/command.c +++ b/navit/command.c @@ -199,6 +199,15 @@ command_set_attr(struct context *ctx, struct result *res, struct result *newres) struct object_func *func=object_func_lookup(res->attr.type); if (!func || !func->set_attr) return; + if (attr_type == attr_attr_types) { + char *attrn=g_alloca(sizeof(char)*(res->attrnlen+1)); + struct attr *tmp; + strncpy(attrn, res->attrn, res->attrnlen); + attrn[res->attrnlen]='\0'; + tmp=attr_new_from_text(attrn, newres->attr.u.str); + newres->attr.u.data=tmp->u.data; + g_free(tmp); + } newres->attr.type=attr_type; result=func->set_attr(res->attr.u.data, &newres->attr); *res=*newres; @@ -425,7 +434,7 @@ command_call_function(struct context *ctx, struct result *res) struct object_func *func=object_func_lookup(attr_type); if (func && func->create) { res->attr.type=attr_type; - res->attr.u.data=func->create(NULL, list); + res->attr.u.data=func->create(list[0], list+1); } } } else if (!strcmp(function,"add_attr")) { |