From 2f8c00580daf10e2cac2a7182aa7a5fb373cbc12 Mon Sep 17 00:00:00 2001 From: Michal Maciola Date: Fri, 2 Jul 2021 15:57:12 +0200 Subject: [PATCH] svg_loader: fix dead loop on none digit char in stroke-dasharray --- src/loaders/svg/tvgSvgLoader.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/loaders/svg/tvgSvgLoader.cpp b/src/loaders/svg/tvgSvgLoader.cpp index 9a3ac426..3f036351 100644 --- a/src/loaders/svg/tvgSvgLoader.cpp +++ b/src/loaders/svg/tvgSvgLoader.cpp @@ -250,10 +250,15 @@ _parseDashArray(const char *str, SvgDash* dash) char *end = nullptr; + str = _skipComma(str); while (*str) { - // skip white space, comma - str = _skipComma(str); - (*dash).array.push(svgUtilStrtof(str, &end)); + float parsedValue = svgUtilStrtof(str, &end); + if (str == end) break; + if (*end == '%') { + ++end; + //TODO: multiply percentage value + } + (*dash).array.push(parsedValue); str = _skipComma(end); } //If dash array size is 1, it means that dash and gap size are the same.