aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sksl/SkSLString.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sksl/SkSLString.cpp')
-rw-r--r--src/sksl/SkSLString.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/sksl/SkSLString.cpp b/src/sksl/SkSLString.cpp
index 125dabb335..292cef5159 100644
--- a/src/sksl/SkSLString.cpp
+++ b/src/sksl/SkSLString.cpp
@@ -210,10 +210,22 @@ String to_string(double value) {
#endif
#define MAX_DOUBLE_CHARS 25
char buffer[MAX_DOUBLE_CHARS];
- SkDEBUGCODE(int len = )SNPRINTF(buffer, sizeof(buffer), "%.17g", value);
+ int len = SNPRINTF(buffer, sizeof(buffer), "%.17g", value);
SkASSERT(len < MAX_DOUBLE_CHARS);
+ bool needsDotZero = true;
+ for (int i = 0; i < len; ++i) {
+ char c = buffer[i];
+ if (c == ',') {
+ buffer[i] = '.';
+ needsDotZero = false;
+ break;
+ } else if (c == '.' || c == 'e') {
+ needsDotZero = false;
+ break;
+ }
+ }
String result(buffer);
- if (!strchr(buffer, '.') && !strchr(buffer, 'e')) {
+ if (needsDotZero) {
result += ".0";
}
return result;