LibC: Fix *scanf consuming extra characters

This commit is contained in:
2024-10-19 12:43:23 +03:00
parent 5fde2cf91a
commit 2464fccadd
3 changed files with 31 additions and 14 deletions

View File

@@ -112,9 +112,9 @@ using BASE_TYPE = BAN::integral_constant<int, BASE>;
template<bool UNSIGNED>
using IS_UNSIGNED = BAN::integral_constant<bool, UNSIGNED>;
int scanf_impl(const char* format, va_list arguments, int (*__getc_fun)(void*), void* data)
int scanf_impl(const char* format, va_list arguments, int (*__getc_fun)(bool advance, void*), void* data)
{
static constexpr int DONE = -1;
static constexpr int DONE = EOF;
static constexpr int NONE = -2;
int nread = 0;
@@ -134,11 +134,9 @@ int scanf_impl(const char* format, va_list arguments, int (*__getc_fun)(void*),
{
if (in == DONE)
return;
if (advance || in == NONE)
{
in = __getc_fun(data);
in = __getc_fun(advance, data);
if (advance)
nread++;
}
};
auto parse_integer_internal =