Test and fix for Bug 1878

Uwe Bonnes bon at elektron.ikp.physik.tu-darmstadt.de
Sat Dec 13 16:26:57 CST 2003


Changelog:
	wine/dlls/msvcrt/scanf.h  wine/dlls/msvcrt/tests/scanf.c
	Patch and test for bug # 1878 (scanf %i handledd wrong)
-- 
Uwe Bonnes                bon at elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------
Index: wine/dlls/msvcrt/scanf.h
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/scanf.h,v
retrieving revision 1.11
diff -u -r1.11 scanf.h
--- wine/dlls/msvcrt/scanf.h	10 Oct 2003 00:00:19 -0000	1.11
+++ wine/dlls/msvcrt/scanf.h	13 Dec 2003 22:20:19 -0000
@@ -168,7 +168,7 @@
 		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;
Index: wine/dlls/msvcrt/tests/scanf.c
===================================================================
RCS file: /home/wine/wine/dlls/msvcrt/tests/scanf.c,v
retrieving revision 1.9
diff -u -r1.9 scanf.c
--- wine/dlls/msvcrt/tests/scanf.c	28 Oct 2003 00:04:42 -0000	1.9
+++ wine/dlls/msvcrt/tests/scanf.c	13 Dec 2003 22:20:20 -0000
@@ -73,6 +73,15 @@
     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 )



More information about the wine-patches mailing list