summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunsuChoi <jsuya.choi@samsung.com>2020-10-12 18:36:31 +0900
committerHermet Park <chuneon.park@samsung.com>2020-10-12 18:37:26 +0900
commit862e65c2608c9a92c084754d1cc526b7c574aea1 (patch)
treea804b4ced8afe96245743d75bb11061a5b1c84ac
parent0742a6c78eb34373842e3927e832e733bdc7e293 (diff)
downloadefl-862e65c2608c9a92c084754d1cc526b7c574aea1.tar.gz
vg_load_svg: Add points copy of missing polygon/polyline
Summary: When using <use> node, do atrribute copy. At that time, when target(url) is polygon or polyline, points array is not copied, causing a problem in output. So, add missing array copy. Test Plan: - Test SVG code <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 64 64" enable-background="new 0 0 64 64" xml:space="preserve"> <g opacity="0.5"> <defs> <polygon id="test" opacity="0.5" points="41.8,14.5 22.2,14.5 22.2,22.8 41.8,40.7"/> </defs> <use xlink:href="#test" overflow="visible"/> </g> </svg> Reviewers: Hermet, smohanty Reviewed By: Hermet Subscribers: #reviewers, #committers, kimcinoo, herb, cedric Tags: #efl Differential Revision: https://phab.enlightenment.org/D12174
-rw-r--r--src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c b/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c
index 246e3e2a0e..721851e4fd 100644
--- a/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c
+++ b/src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c
@@ -1651,10 +1651,12 @@ _copy_attribute(Svg_Node *to, Svg_Node *from)
case SVG_NODE_POLYGON:
to->node.polygon.points_count = from->node.polygon.points_count;
to->node.polygon.points = calloc(to->node.polygon.points_count, sizeof(double));
+ memcpy(to->node.polygon.points, from->node.polygon.points, to->node.polygon.points_count * sizeof(double));
break;
case SVG_NODE_POLYLINE:
to->node.polyline.points_count = from->node.polyline.points_count;
to->node.polyline.points = calloc(to->node.polyline.points_count, sizeof(double));
+ memcpy(to->node.polyline.points, from->node.polyline.points, to->node.polyline.points_count * sizeof(double));
break;
default:
break;