tvgSvgLoader: Add points copy of missing polygon/polyline
authorJunsuChoi <jsuya.choi@samsung.com>
Tue, 13 Oct 2020 04:45:40 +0000 (13:45 +0900)
committerHermet Park <chuneon.park@samsung.com>
Tue, 13 Oct 2020 04:55:02 +0000 (13:55 +0900)
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.

Change-Id: I0c8b295f4723a3e4d96831191073d49058d2923a

src/loaders/svg/tvgSvgLoader.cpp

index 8e52b44..cd1fec7 100644 (file)
@@ -1546,12 +1546,14 @@ static void _copyAttr(SvgNode* to, SvgNode* from)
         }
         case SvgNodeType::Polygon: {
             to->node.polygon.pointsCount = from->node.polygon.pointsCount;
-            to->node.polygon.points = (float*)calloc(to->node.polygon.pointsCount, sizeof(float));
+            to->node.polygon.points = (float*)malloc(to->node.polygon.pointsCount * sizeof(float));
+            memcpy(to->node.polygon.points, from->node.polygon.points, to->node.polygon.pointsCount * sizeof(float));
             break;
         }
         case SvgNodeType::Polyline: {
             to->node.polyline.pointsCount = from->node.polyline.pointsCount;
-            to->node.polyline.points = (float*)calloc(to->node.polyline.pointsCount, sizeof(float));
+            to->node.polyline.points = (float*)malloc(to->node.polyline.pointsCount * sizeof(float));
+            memcpy(to->node.polyline.points, from->node.polyline.points, to->node.polyline.pointsCount * sizeof(float));
             break;
         }
         default: {