diff options
author | Mike Blumenkrantz <zmike@osg.samsung.com> | 2015-12-16 14:35:19 -0500 |
---|---|---|
committer | Mike Blumenkrantz <zmike@osg.samsung.com> | 2015-12-16 15:03:40 -0500 |
commit | e14dc0f11dcebf14c47efe2aef8861d5d1452f95 (patch) | |
tree | f3fb8a610b8938d518d795c83b32297e10611caa | |
parent | 6eff8ab5bac7e77ba3a42203636ceb61f5724a69 (diff) | |
download | efl-e14dc0f11dcebf14c47efe2aef8861d5d1452f95.tar.gz |
edje_cc: correctly copy part descriptions when setting part type
in the case where a part is inherited, changing the type will lead to
broken part/program lookups for the part during resolving in write-out;
memcpy alone is not enough to fix this.
@fix
-rw-r--r-- | src/bin/edje/edje_cc_handlers.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 3e2c5e37dc..14210623ea 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -5076,8 +5076,13 @@ _part_type_set(unsigned int type) if (previous) { new = _edje_part_description_alloc(type, pc->part, ep->name); - memcpy(new, previous, sizeof (Edje_Part_Description_Common)); eina_hash_add(desc_hash, &new, ep); + parent_desc = previous; + new->state.name = strdup(previous->state.name); + new->state.value = previous->state.value; + st_collections_group_parts_part_description_inherit(); + parent_desc = NULL; + _part_desc_free(pc, ep, previous); ep->default_desc = new; } @@ -5086,8 +5091,13 @@ _part_type_set(unsigned int type) { previous = ep->other.desc[i]; new = _edje_part_description_alloc(type, pc->part, ep->name); - memcpy(new, previous, sizeof (Edje_Part_Description_Common)); eina_hash_add(desc_hash, &new, ep); + parent_desc = previous; + new->state.name = strdup(previous->state.name); + new->state.value = previous->state.value; + st_collections_group_parts_part_description_inherit(); + parent_desc = NULL; + _part_desc_free(pc, ep, previous); ep->other.desc[i] = new; } } |