diff --git a/nanosvg/nanosvg.h b/nanosvg/nanosvg.h index 2321c56fd..bd5b722f4 100644 --- a/nanosvg/nanosvg.h +++ b/nanosvg/nanosvg.h @@ -1081,7 +1081,7 @@ static double nsvg__atof(const char* s) char* cur = (char*)s; char* end = NULL; double res = 0.0, sign = 1.0; - long long intPart = 0, fracPart = 0; + double intPart = 0, fracPart = 0; char hasIntPart = 0, hasFracPart = 0; // Parse optional sign @@ -1095,7 +1095,11 @@ static double nsvg__atof(const char* s) // Parse integer part if (nsvg__isdigit(*cur)) { // Parse digit sequence - intPart = (double)strtoll(cur, &end, 10); +#ifdef _MSC_VER + intPart = (double)_strtoi64(cur, &end, 10); +#else + intPart = (double)strtoll(cur, &end, 10); +#endif if (cur != end) { res = (double)intPart; hasIntPart = 1; @@ -1108,7 +1112,11 @@ static double nsvg__atof(const char* s) cur++; // Skip '.' if (nsvg__isdigit(*cur)) { // Parse digit sequence - fracPart = strtoll(cur, &end, 10); +#ifdef _MSC_VER + fracPart = (double)_strtoi64(cur, &end, 10); +#else + fracPart = (double)strtoll(cur, &end, 10); +#endif if (cur != end) { res += (double)fracPart / pow(10.0, (double)(end - cur)); hasFracPart = 1; @@ -1123,11 +1131,11 @@ static double nsvg__atof(const char* s) // Parse optional exponent if (*cur == 'e' || *cur == 'E') { - int expPart = 0; + double expPart = 0; cur++; // skip 'E' - expPart = strtol(cur, &end, 10); // Parse digit sequence with sign + expPart = (double)strtol(cur, &end, 10); // Parse digit sequence with sign if (cur != end) { - res *= pow(10.0, (double)expPart); + res *= pow(10.0, expPart); } } diff --git a/src/Fl_SVG_Image.cxx b/src/Fl_SVG_Image.cxx index 04a4d455e..91be0c70d 100644 --- a/src/Fl_SVG_Image.cxx +++ b/src/Fl_SVG_Image.cxx @@ -25,17 +25,15 @@ #include #include -#ifdef HAVE_LONG_LONG - typedef long long fl_nsvg_int; -#else - typedef long fl_nsvg_int; -# define strtoll(a, b, c) strtol(a, b, c) +#if !defined(HAVE_LONG_LONG) +static double strtoll(const char *str, char **endptr, int base) { + return (double)strtol(str, endptr, base); +} #endif - #define NANOSVG_ALL_COLOR_KEYWORDS // Include full list of color keywords. #define NANOSVG_IMPLEMENTATION // Expands implementation -#include "../nanosvg/fl_nanosvg.h" +#include "../nanosvg/nanosvg.h" #define NANOSVGRAST_IMPLEMENTATION // Expands implementation #include "../nanosvg/altsvgrast.h"