diff --git a/dlls/msvcrt/scanf.h b/dlls/msvcrt/scanf.h index 0a4502ab2b2..9594048003e 100644 --- a/dlls/msvcrt/scanf.h +++ b/dlls/msvcrt/scanf.h @@ -168,7 +168,7 @@ int _FUNCTION_ { base = 10; number_signed = 1; goto number; case 'i': /* generic integer */ - base = 0; number_signed = 1; + base = 10; number_signed = 1; number: { /* read an integer */ long unsigned int cur = 0; diff --git a/dlls/msvcrt/tests/scanf.c b/dlls/msvcrt/tests/scanf.c index ee704081bdc..ee16c570087 100644 --- a/dlls/msvcrt/tests/scanf.c +++ b/dlls/msvcrt/tests/scanf.c @@ -73,6 +73,15 @@ static void test_sscanf( void ) ret = sscanf(buffer+2,"%*c%n",&number_so_far); ok(ret == 0 , "problem with format arg \"%%*c%%n\""); ok(number_so_far == 1,"Read wrong arg for \"%%n\" %d instead of 2",number_so_far); + + /* Check %i according to bug 1878 */ + strcpy(buffer,"123"); + ret = sscanf(buffer, "%i", &result); + ok( ret == 1 , "Wrong number of arguments read"); + ok(result == 123, "Wrong number read"); + ret = sscanf(buffer, "%d", &result); + ok( ret == 1 , "Wrong number of arguments read"); + ok(result == 123, "Wrong number read"); } static void test_sprintf( void )