From ac49d0b2d38cb5e2d7bcd770bf1ce963384cf1f6 Mon Sep 17 00:00:00 2001 From: Christoph von Wittich Date: Sat, 15 Feb 2014 19:12:07 +0000 Subject: [PATCH] [crt] partial sync of with wine 1.7.11 svn path=/trunk/; revision=62199 --- reactos/lib/sdk/crt/string/scanf.h | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/reactos/lib/sdk/crt/string/scanf.h b/reactos/lib/sdk/crt/string/scanf.h index 4d904bdfd28..b27eb5626aa 100644 --- a/reactos/lib/sdk/crt/string/scanf.h +++ b/reactos/lib/sdk/crt/string/scanf.h @@ -131,8 +131,14 @@ _FUNCTION_ { /* read prefix (if any) */ while (!prefix_finished) { switch(*format) { - case 'h': h_prefix = 1; break; - case 'l': l_prefix = 1; break; + case 'h': h_prefix++; break; + case 'l': + if(*(format+1) == 'l') { + I64_prefix = 1; + format++; + } + l_prefix = 1; + break; case 'w': w_prefix = 1; break; case 'L': L_prefix = 1; break; case 'I': @@ -227,15 +233,15 @@ _FUNCTION_ { #define _SET_NUMBER_(type) *va_arg(ap, type*) = (type)(negative ? -cur : cur) if (I64_prefix) _SET_NUMBER_(LONGLONG); else if (l_prefix) _SET_NUMBER_(LONG); - else if (h_prefix) _SET_NUMBER_(short int); + else if (h_prefix == 1) _SET_NUMBER_(short int); else _SET_NUMBER_(int); } } break; - case 'e': - case 'E': - case 'f': - case 'g': + case 'e': + case 'E': + case 'f': + case 'g': case 'G': { /* read a float */ long double cur = 0; int negative = 0; @@ -527,6 +533,7 @@ _FUNCTION_ { if (nch!=_EOF_) { _UNGETC_(nch, file); } + TRACE("returning %d\n", rd); return rd; } -- 2.17.1