From: JunsuChoi Date: Wed, 23 Jun 2021 03:43:45 +0000 (+0900) Subject: svg_loader SvgPath: Added corner case handling for flags of Arc X-Git-Tag: submit/tizen/20210702.111011~38 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=55c1cf4010c349b074b4a1565c70887ebb60e651;p=platform%2Fcore%2Fgraphics%2Ftizenvg.git svg_loader SvgPath: Added corner case handling for flags of Arc It handles the case what the flag of the arc of the path is defined without spaces or commas, such as 00, 01, 11 or 10. --- diff --git a/src/loaders/svg/tvgSvgPath.cpp b/src/loaders/svg/tvgSvgPath.cpp index d1bd3a6..0f21973 100644 --- a/src/loaders/svg/tvgSvgPath.cpp +++ b/src/loaders/svg/tvgSvgPath.cpp @@ -57,16 +57,15 @@ static bool _parseNumber(char** content, float* number) static bool _parseFlag(char** content, int* number) { - char* end = NULL; - *number = strtol(*content, &end, 10); - //If the start of string is not number or a number was a float - if ((*content) == end || *end == '.') return false; - //If a flag has a different value than 0 or 1 - if (*number != 0 && *number != 1) return false; - *content = _skipComma(end); + if (*(*content) != '0' && *(*content) != '1') return false; + *number = *(*content) - '0'; + *content = _skipComma(*content + 1); + if (*(*content) == '.') return false; + return true; } + void _pathAppendArcTo(Array* cmds, Array* pts, Point* cur, Point* curCtl, float x, float y, float rx, float ry, float angle, bool largeArc, bool sweep) { float cxp, cyp, cx, cy;