Will Mainio : msvcrt: Fix scanf with dashes in scanset.

Alexandre Julliard julliard at winehq.org
Mon Nov 2 16:21:20 CST 2020


Module: wine
Branch: master
Commit: c38102b9b49c2f63e9ff7369f612b999dec609ca
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=c38102b9b49c2f63e9ff7369f612b999dec609ca

Author: Will Mainio <will.mainio at fastmail.com>
Date:   Mon Nov  2 16:00:07 2020 +0100

msvcrt: Fix scanf with dashes in scanset.

Signed-off-by: Will Mainio <will.mainio at fastmail.com>
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/scanf.h | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/dlls/msvcrt/scanf.h b/dlls/msvcrt/scanf.h
index 3b4686c1107..e1a194e39fa 100644
--- a/dlls/msvcrt/scanf.h
+++ b/dlls/msvcrt/scanf.h
@@ -639,12 +639,12 @@ _FUNCTION_ {
                     while(*format && (*format != ']')) {
 			/* According to msdn:
 			 * "Note that %[a-z] and %[z-a] are interpreted as equivalent to %[abcde...z]." */
-			if((*format == '-') && (*(format + 1) != ']')) {
-			    if ((*(format - 1)) < *(format + 1))
-				RtlSetBits(&bitMask, *(format - 1) +1 , *(format + 1) - *(format - 1));
-			    else
-				RtlSetBits(&bitMask, *(format + 1)    , *(format - 1) - *(format + 1));			      
-			    format++;
+                        if(format[1] == '-' && format[2] && format[2] != ']') {
+                            if (format[0] < format[2])
+                                RtlSetBits(&bitMask, format[0], format[2] - format[0] + 1);
+                            else
+                                RtlSetBits(&bitMask, format[2], format[0] - format[2] + 1);
+			    format += 2;
 			} else
 			    RtlSetBits(&bitMask, *format, 1);
 			format++;




More information about the wine-cvs mailing list