msvcrt: Fix overflow checks in parse_double.

Old check is optimized out in gcc 9.3.0 when -O2 optimization is
enabled.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Piotr Caban 2020-04-28 19:21:40 +02:00 committed by Alexandre Julliard
parent d0a926baf4
commit 405c99ef52
1 changed files with 4 additions and 4 deletions

View File

@ -555,8 +555,8 @@ static double strtod16(MSVCRT_wchar_t get(void *ctx), void unget(void *ctx),
if((nch!=MSVCRT_WEOF) && (nch < '0' || nch > '9')) unget(ctx);
e *= s;
if(exp<0 && e<0 && exp+e>=0) exp = INT_MIN;
else if(exp>0 && e>0 && exp+e<0) exp = INT_MAX;
if(e<0 && exp<INT_MIN-e) exp = INT_MIN;
else if(e>0 && exp>INT_MAX-e) exp = INT_MAX;
else exp += e;
} else {
if(nch != MSVCRT_WEOF) unget(ctx);
@ -784,8 +784,8 @@ double parse_double(MSVCRT_wchar_t (*get)(void *ctx), void (*unget)(void *ctx),
if(nch != MSVCRT_WEOF) unget(ctx);
e *= s;
if(exp<0 && e<0 && exp+e>=0) exp = INT_MIN;
else if(exp>0 && e>0 && exp+e<0) exp = INT_MAX;
if(e<0 && exp<INT_MIN-e) exp = INT_MIN;
else if(e>0 && exp>INT_MAX-e) exp = INT_MAX;
else exp += e;
} else {
if(nch != MSVCRT_WEOF) unget(ctx);