diff options
Diffstat (limited to 'src/sksl/SkSLString.cpp')
-rw-r--r-- | src/sksl/SkSLString.cpp | 16 |
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; |