diff --git a/src/crt.cpp b/src/crt.cpp index eed96ee..5f61185 100644 --- a/src/crt.cpp +++ b/src/crt.cpp @@ -332,6 +332,11 @@ namespace bx size += write(_writer, va_arg(_argList, const char*), param, _err); break; + case 'o': + param.base = 8; + size += write(_writer, va_arg(_argList, int32_t), param, _err); + break; + case 'i': case 'd': param.base = 10; diff --git a/tests/vsnprintf_test.cpp b/tests/vsnprintf_test.cpp index bb9f113..3e44c73 100644 --- a/tests/vsnprintf_test.cpp +++ b/tests/vsnprintf_test.cpp @@ -53,7 +53,7 @@ TEST_CASE("vsnprintf f", "") REQUIRE(test("13.370 ", "%*.*f", -8, 3, 13.37) ); } -TEST_CASE("vsnprintf d/i/u/x", "") +TEST_CASE("vsnprintf d/i/o/u/x", "") { REQUIRE(test("1337", "%d", 1337) ); REQUIRE(test("1337 ", "%-20d", 1337) ); @@ -63,6 +63,11 @@ TEST_CASE("vsnprintf d/i/u/x", "") REQUIRE(test("1337 ", "%-20i", 1337) ); REQUIRE(test("-1337 ", "%-20i", -1337) ); + REQUIRE(test("1337", "%o", 01337) ); + REQUIRE(test("2471", "%o", 1337) ); + REQUIRE(test("1337 ", "%-20o", 01337) ); + REQUIRE(test("37777776441 ", "%-20o", -01337) ); + REQUIRE(test("1337", "%u", 1337) ); REQUIRE(test("1337 ", "%-20u", 1337u) ); REQUIRE(test("4294965959 ", "%-20u", -1337u) );