diff --git a/src/lib/tvgArray.h b/src/lib/tvgArray.h index d956ca35..0d000e21 100644 --- a/src/lib/tvgArray.h +++ b/src/lib/tvgArray.h @@ -35,6 +35,15 @@ struct Array uint32_t count = 0; uint32_t reserved = 0; + Array(){} + + Array(const Array& rhs) + { + reserve(rhs.reserved); + count = rhs.count; + memcpy(data, rhs.data, sizeof(T) * count); + } + void push(T element) { if (count + 1 > reserved) { diff --git a/src/lib/tvgShapeImpl.h b/src/lib/tvgShapeImpl.h index 1015a88d..7376e7a5 100644 --- a/src/lib/tvgShapeImpl.h +++ b/src/lib/tvgShapeImpl.h @@ -316,16 +316,10 @@ struct Shape::Impl //Path if (rs.path.cmds.count > 0 && rs.path.pts.count > 0) { - dup->rs.path.cmds.reserve(rs.path.cmds.reserved); - dup->rs.path.pts.reserve(rs.path.pts.reserved); - - dup->rs.path.cmds.count = rs.path.cmds.count; - memcpy(dup->rs.path.cmds.data, rs.path.cmds.data, sizeof(PathCommand) * dup->rs.path.cmds.count); - - dup->rs.path.pts.count = rs.path.pts.count; - memcpy(dup->rs.path.pts.data, rs.path.pts.data, sizeof(Point) * dup->rs.path.pts.count); + dup->rs.path.cmds = rs.path.cmds; + dup->rs.path.pts = rs.path.pts; + dup->flag |= RenderUpdateFlag::Path; } - dup->flag |= RenderUpdateFlag::Path; //Stroke if (rs.stroke) { diff --git a/src/loaders/svg/tvgSvgLoaderCommon.h b/src/loaders/svg/tvgSvgLoaderCommon.h index b9abe6a5..69c091c3 100644 --- a/src/loaders/svg/tvgSvgLoaderCommon.h +++ b/src/loaders/svg/tvgSvgLoaderCommon.h @@ -542,7 +542,7 @@ struct SvgNodeIdPair struct SvgLoaderData { - Array stack = {nullptr, 0, 0}; + Array stack; SvgNode* doc = nullptr; SvgNode* def = nullptr; SvgNode* cssStyle = nullptr;