diff --git a/include/bx/platform.h b/include/bx/platform.h index 1f9a98d..91f4f4f 100644 --- a/include/bx/platform.h +++ b/include/bx/platform.h @@ -34,9 +34,12 @@ #define BX_CRT_LIBCXX 0 #define BX_CRT_MINGW 0 #define BX_CRT_MSVC 0 -#define BX_CRT_MUSL 0 #define BX_CRT_NEWLIB 0 +#ifndef BX_CRT_MUSL +# define BX_CRT_MUSL 0 +#endif // BX_CRT_MUSL + #ifndef BX_CRT_NONE # define BX_CRT_NONE 0 #endif // BX_CRT_NONE diff --git a/src/string.cpp b/src/string.cpp index 7d0cf7f..dbb59e5 100644 --- a/src/string.cpp +++ b/src/string.cpp @@ -743,7 +743,9 @@ namespace bx }; break; + case 'e': case 'f': + case 'g': param.upper = isUpper(ch); size += write(_writer, va_arg(_argList, double), param, _err); break; diff --git a/tests/vsnprintf_test.cpp b/tests/vsnprintf_test.cpp index 806c3ab..12aea7b 100644 --- a/tests/vsnprintf_test.cpp +++ b/tests/vsnprintf_test.cpp @@ -149,6 +149,14 @@ TEST_CASE("vsnprintf s", "") REQUIRE(test("(null)", "%s", NULL) ); } +TEST_CASE("vsnprintf g", "") +{ + REQUIRE(test(" 0.01", "%7.3g", .01) ); + REQUIRE(test(" 0.0123", "%7.3G", .0123) ); + REQUIRE(test("1.23e+05", "%.3g", 123000.25) ); + REQUIRE(test("1e+05", "%.0g", 123000.25) ); +} + TEST_CASE("vsnprintf", "") { REQUIRE(test("x", "%c", 'x') );