hermet pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=862e65c2608c9a92c084754d1cc526b7c574aea1

commit 862e65c2608c9a92c084754d1cc526b7c574aea1
Author: JunsuChoi <jsuya.c...@samsung.com>
Date:   Mon Oct 12 18:36:31 2020 +0900

    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
---
 src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c | 2 ++
 1 file changed, 2 insertions(+)

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;

-- 


Reply via email to