From 55c1cf4010c349b074b4a1565c70887ebb60e651 Mon Sep 17 00:00:00 2001 From: JunsuChoi Date: Wed, 23 Jun 2021 12:43:45 +0900 Subject: [PATCH] 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. --- src/loaders/svg/tvgSvgPath.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) 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; -- 2.7.4