summaryrefslogtreecommitdiff
path: root/navit/attr.c
diff options
context:
space:
mode:
authormartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-01-04 09:13:07 +0000
committermartin-s <martin-s@ffa7fe5e-494d-0410-b361-a75ebd5db220>2010-01-04 09:13:07 +0000
commit425dec68f8799e1ee36549c6c8a2c399f8fc6b40 (patch)
tree7951dcdb7513d2c28db5781d7c7034877d6cbb4d /navit/attr.c
parent771e741ee77bb84cc4d112ca6671addfefe99d6a (diff)
downloadnavit-425dec68f8799e1ee36549c6c8a2c399f8fc6b40.tar.gz
Add:gui_internal:More html functionality
git-svn-id: http://svn.code.sf.net/p/navit/code/trunk/navit@2895 ffa7fe5e-494d-0410-b361-a75ebd5db220
Diffstat (limited to 'navit/attr.c')
-rw-r--r--navit/attr.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/navit/attr.c b/navit/attr.c
index ad9013d0d..79458e90e 100644
--- a/navit/attr.c
+++ b/navit/attr.c
@@ -504,23 +504,29 @@ attr_free(struct attr *attr)
g_free(attr);
}
-struct attr *
-attr_dup(struct attr *attr)
+void
+attr_dup_content(struct attr *src, struct attr *dst)
{
int size;
- struct attr *ret=g_new0(struct attr, 1);
- ret->type=attr->type;
- if (attr->type >= attr_type_int_begin && attr->type <= attr_type_int_end)
- ret->u.num=attr->u.num;
- else if (attr->type >= attr_type_object_begin && attr->type <= attr_type_object_end)
- ret->u.data=attr->u.data;
+ dst->type=src->type;
+ if (src->type >= attr_type_int_begin && src->type <= attr_type_int_end)
+ dst->u.num=src->u.num;
+ else if (src->type >= attr_type_object_begin && src->type <= attr_type_object_end)
+ dst->u.data=src->u.data;
else {
- size=attr_data_size(attr);
+ size=attr_data_size(src);
if (size) {
- ret->u.data=g_malloc(size);
- memcpy(ret->u.data, attr->u.data, size);
+ dst->u.data=g_malloc(size);
+ memcpy(dst->u.data, src->u.data, size);
}
}
+}
+
+struct attr *
+attr_dup(struct attr *attr)
+{
+ struct attr *ret=g_new0(struct attr, 1);
+ attr_dup_content(attr, ret);
return ret;
}