[PATCH resend] webservices: Use sscanf to convert strings to doubles.
Hans Leidekker
hans at codeweavers.com
Mon Jan 6 04:52:30 CST 2020
On Fri, 2020-01-03 at 17:08 -0700, Erich E. Hoover wrote:
> + if (*p == '+' || *p == '-')
> {
> - tmp = val * 10 + p[i] - '0';
> - if (val > MAX_UINT64 / 10 || tmp < val)
> + if (len == 1 || (len == 2 && *(p+1) == '.'))
> {
> - for (; i < nb_digits; i++) exp++;
> - break;
> + ret = 0;
> + return S_OK;
> }
'ret' is a pointer.
> + ret = 0;
> + return S_OK;
Same here.
> + for (i = 0; i < len; i++)
> {
> - if (exp & 1) exp_val *= exp_mul;
> - exp_mul *= exp_mul;
> + if (p[i] >= '0' && p[i] <= '9') continue;
> + if (p[i] != 'e' && p[i] != 'E' && p[i] != '.' && p[i] != '+' && p[i] != '-')
> + return WS_E_INVALID_FORMAT;
> }
Is this part really necessary? I also get new failures with a non-mingw build:
reader.c:3729: Test failed: 0: got 803d0000
reader.c:3729: Test failed: 1: got 803d0000
reader.c:3729: Test failed: 2: got 803d0000
reader.c:3729: Test failed: 8: got 803d0000
reader.c:3729: Test failed: 9: got 803d0000
reader.c:3729: Test failed: 10: got 803d0000
...
Looks like scanf returns a different result for %n in this case. It probably
shouldn't block this patch though.
More information about the wine-devel
mailing list