Forráskód Böngészése

Merge pull request #33376 from jamie-pate/master

Fix #24137 Different number of leading zeros on MINGW printf("%lg")
Rémi Verschelde 5 éve
szülő
commit
665ee70edb
1 módosított fájl, 10 hozzáadás és 0 törlés
  1. 10 0
      core/ustring.cpp

+ 10 - 0
core/ustring.cpp

@@ -1337,7 +1337,17 @@ String String::num_scientific(double p_num) {
 	char buf[256];
 	char buf[256];
 
 
 #if defined(__GNUC__) || defined(_MSC_VER)
 #if defined(__GNUC__) || defined(_MSC_VER)
+
+#if (defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER < 1900)) && defined(_TWO_DIGIT_EXPONENT)
+	// MinGW and old MSC require _set_output_format() to conform to C99 output for printf
+	unsigned int old_exponent_format = _set_output_format(_TWO_DIGIT_EXPONENT);
+#endif
 	snprintf(buf, 256, "%lg", p_num);
 	snprintf(buf, 256, "%lg", p_num);
+
+#if (defined(__MINGW32__) || (defined(_MSC_VER) && _MSC_VER < 1900)) && defined(_TWO_DIGIT_EXPONENT)
+	_set_output_format(old_exponent_format);
+#endif
+
 #else
 #else
 	sprintf(buf, "%.16lg", p_num);
 	sprintf(buf, "%.16lg", p_num);
 #endif
 #endif