summaryrefslogtreecommitdiff
path: root/navit/command.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2011-10-07 20:57:17 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2011-10-07 20:57:17 +0000
commitebf7ceac13665a3f2bf246126efb3dc333852326 (patch)
treef7c3f466275751a7e6c74c3553ed49848f33749d /navit/command.c
parent2bbeba44ef20a51e63482bf38a15cdf76c5cec50 (diff)
downloadnavit-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.c11
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")) {