summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--nanosvg/nanosvg.h20
-rw-r--r--src/Fl_SVG_Image.cxx12
2 files changed, 19 insertions, 13 deletions
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 <stdio.h>
#include <stdlib.h>
-#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"