Commit Graph

210 Commits

Author SHA1 Message Date
Daniel Lehman ee65859b7f msvcrt: Treat large exponent as overflow in strtod.
Signed-off-by: Daniel Lehman <dlehman25@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 00:04:13 +02:00
Daniel Lehman 0945ba00fb msvcrt: Set errno in strtod.
Signed-off-by: Daniel Lehman <dlehman25@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-17 00:04:13 +02:00
Piotr Caban ec148864d6 msvcrt: Move big numbers implementation to new file.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-07-13 21:22:11 +02:00
Piotr Caban bfa1e3ef8f msvcrt: Use internal sprintf implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-06-08 21:01:33 +02:00
Francois Gouget 10bfa512df msvcrt: Fix a couple of spelling errors in comments.
Signed-off-by: Francois Gouget <fgouget@free.fr>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-18 11:52:37 +02:00
Piotr Caban ab5e48f4fc msvcrt: Fix 0 parsing in parse_double helper.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-04 12:39:09 +02:00
Piotr Caban 65642f4bb7 msvcrt: Avoid depending on signed variable overflow in parse_double.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-05-01 21:51:31 +02:00
Piotr Caban ed07d07bed msvcrt: Improve string to double conversion accuracy.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-04-28 22:01:33 +02:00
Piotr Caban 405c99ef52 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>
2020-04-28 22:01:00 +02:00
Piotr Caban 471425c16d msvcrt: Optimize _strnicmp_l implementation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48723
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-03-09 22:16:30 +01:00
Alexandre Julliard 4e2da207d7 msvcrt: Use unsigned comparisons in strcmp and strncmp.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48454
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-16 12:21:11 +01:00
Piotr Caban 3fc3d24c3c ucrtbase: Fix end pointer setting in parse_double on partial nan/infinity match.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-07 22:26:08 +01:00
Piotr Caban 1d91c196e7 ucrtbase: Fix 0 parsing in parse_double.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-03 21:40:59 +01:00
Erich E. Hoover f99d307a3e msvcrt: Use parse_double for scanf floats.
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-02 19:16:02 +01:00
Erich E. Hoover b12d6d405a msvcrt: Rework strtod_helper to be reusable.
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2020-01-02 17:43:12 +01:00
Piotr Caban 5034d109e0 msvcrt: Improve strtod precision.
This fixes strtod precision regression. It also removes floating
point operations.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-30 21:11:45 +01:00
Erich E. Hoover 27b9a420ea msvcrt: Fix [str|wcs]tod result being compared against FLT_MAX.
Also a more straightforward way of fixing the tests on i386 Linux.

Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48324
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-23 20:13:23 +01:00
Erich E. Hoover c22af971c2 msvcrt: Implement strtod without using 'long double'.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=48160
Signed-off-by: Erich E. Hoover <erich.e.hoover@gmail.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-19 16:20:39 +01:00
Gijs Vermeulen e44d935cc6 msvcrt: Optimize _strlwr implementation in C locale.
Tests by Ambrož Bizjak.

Signed-off-by: Gijs Vermeulen <gijsvrm@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-12-04 16:44:06 +01:00
Piotr Caban c953c36d11 ucrtbase: Fix hexadecimal floats parsing in strtod.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 18:02:59 +01:00
Piotr Caban e2423823fc msvcrt: Use isspace_l in string to number conversion functions.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-11-22 18:02:51 +01:00
Alexandre Julliard 97425bd963 msvcrt: Reimplement strcmp/strncmp to get consistent return values.
The system functions may not always return -1 or 1.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-31 09:56:03 +01:00
Piotr Caban df60573653 msvcrt: Don't use strstr from C-library.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-28 19:19:33 +01:00
Piotr Caban 69ea905674 msvcrt: Don't use strcspn from C-library.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-10-28 19:19:33 +01:00
Alexandre Julliard 1f7489d493 crtdll: Share source with msvcrt.
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-29 21:13:43 +01:00
Piotr Caban f48ea29726 msvcrt: Use _strnicmp instead of strncasecmp.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:50:36 +01:00
Piotr Caban 462caf8fbd msvcrt: Use _stricmp instead of strcasecmp.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:50:34 +01:00
Piotr Caban 834134f284 msvcrt: Use internal tolower implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-26 13:50:30 +01:00
Piotr Caban 8c1684a50a msvcrt: Don't detect overflow in atol implementation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46845
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 10:10:44 +01:00
Piotr Caban 58140f73a2 msvcrt: Fix long limits in _atol_l.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2019-03-18 10:10:36 +01:00
Nikolay Sivov 60c06980cf msvcrt: Implement __strncnt().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-30 18:04:48 +01:00
Piotr Caban c99d14d04d msvcrt: Don't forward strpbrk to ntdll.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-17 17:32:14 +02:00
Piotr Caban f43ae5e803 msvcrt: Don't forward strcspn to ntdll.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-17 17:32:11 +02:00
Piotr Caban 98eb7171e1 msvcrt: Don't forward atol to ntdll.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-17 17:32:00 +02:00
Piotr Caban 4d0a008e5d msvcrt: Don't forward _atoi64 to ntdll.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45922
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-10-17 17:31:42 +02:00
Daniel Lehman eb37e2e482 msvcrt: Don't read past end of string in _strnicoll/_wcsnicoll.
Signed-off-by: Daniel Lehman <dlehman@esri.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-19 17:47:53 +02:00
Daniel Lehman 368e9f39b4 msvcrt: Don't read past end of string in _strncoll/_wcsncoll.
Signed-off-by: Daniel Lehman <dlehman@esri.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-08-19 17:47:44 +02:00
Hua Meng e1c7a1f7ce msvcrt: Implement _atoi64_l.
Signed-off-by: Hua Meng <161220092@smail.nju.edu.cn>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-26 22:56:31 +02:00
Hua Meng 2f9dd7f6cb msvcrt: Implement _atol_l.
Signed-off-by: Hua Meng <161220092@smail.nju.edu.cn>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-26 22:56:23 +02:00
Piotr Caban 52415cabb0 msvcrt: Optimize _strupr implementation in C locale.
Don't write to input buffer when there's nothing to change.

Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-03-22 20:15:15 +01:00
Alex Henrie 1afc433954 msvcrt: Don't include MSVC 8.0+ string functions in SOs for older DLLs.
Signed-off-by: Alex Henrie <alexhenrie24@gmail.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2018-01-02 15:52:22 +01:00
Nikolay Sivov d045a5ea29 msvcrt: Implement _memicmp_l().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-11-08 20:21:10 +01:00
Piotr Caban 395a65bdc6 msvcrt: Fix strcpy implementation so it works on overlapping buffers.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2017-08-06 10:34:11 +09:00
Bernhard Übelacker 4fa616c37c msvcrt: Fix strtok_s and _mbstok_s for empty strings.
Signed-off-by: Bernhard Übelacker <bernhardu@mailbox.org>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-08-18 20:38:15 +09:00
Bernhard Übelacker 78716aebf8 msvcr120: Implement strtof and _strtof_l.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-19 15:10:20 +09:00
Piotr Caban aff5d2c1f3 msvcrt: Don't use isdigit in places where only 0-9 digits are handled.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-19 15:10:20 +09:00
Rafał Harabień ad9ab7c40b msvcr120: Implement atoll, _atoll_l, _wtoll, _wtoll_l.
Signed-off-by: Rafał Harabień <rafalh1992@o2.pl>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2016-02-09 23:25:57 +09:00
Piotr Caban 5e10634a5a msvcrt: Add _strtol_l implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
2015-12-21 18:19:54 +01:00
Martin Storsjo 8578702e06 ucrtbase: Make the strtod implementation C99 compatible.
Add a test for ucrtbase that verifies these aspects of the C99
behaviour of strtod.

Signed-off-by: Martin Storsjo <martin@martin.st>
Signed-off-by: Piotr Caban <piotr@codeweavers.com>
2015-10-02 20:50:10 +09:00
Sebastian Lackner abbb361733 msvcrt: Set *end to NULL when strtod is called with NULL pointer string. 2015-06-29 19:07:50 +09:00
Piotr Caban 0922865b37 msvcrt: Fix strtol implementation on strings not containing valid number. 2015-06-08 19:07:55 +09:00
Vincent Povirk 5ba68bb966 msvcrt: Implement _strtoul_l. 2014-10-29 20:31:03 +09:00
Piotr Caban 7cf23a7957 msvcrt: Fix _stricmp behavior on characters that doesn't fit into signed char. 2014-09-03 16:31:01 +02:00
Piotr Caban 53869e19eb msvcrt: Add _strnset_s implementation. 2014-09-02 15:07:27 +02:00
Piotr Caban 00bce25143 msvcrt: Add _strxfrm_l implementation. 2014-06-12 18:25:23 +02:00
Piotr Caban 49e503c55a msvcrt: Remove no longer needed exports. 2014-04-21 14:31:48 +02:00
Piotr Caban beeea28a53 msvcr100: Move functions implementation to msvcrt. 2014-04-16 18:00:15 +02:00
Piotr Caban e70bf5f8c6 msvcrt: Fix compilation errors on Mingw. 2014-04-16 18:00:01 +02:00
Piotr Caban 619944cf58 msvcrt: Fix str*coll functions behavior in C locale. 2014-01-27 14:13:27 +01:00
Piotr Caban f906be9ef4 msvcrt: Don't validate parameters in _itoa function. 2013-10-15 16:36:25 +02:00
Piotr Caban d99090aff8 msvcrt: Don't forward _itoa to ntdll. 2013-10-01 13:10:21 +02:00
Frédéric Delanoy cb7546eaf7 msvcrt: Use BOOL type where appropriate. 2013-09-27 10:44:55 +02:00
Piotr Caban a449b2d57b msvcrt: Call MSVCRT_strtoi64_l in strtoul implementation. 2013-09-25 19:30:32 +02:00
Piotr Caban c3c44544ff msvcrt: Call MSVCRT_strtoi64_l in strtol implementation. 2013-09-25 19:30:30 +02:00
Piotr Caban 019c34ca1e msvcrt: Don't forward strstr to ntdll. 2013-09-17 16:25:28 +02:00
Piotr Caban 138df7da33 msvcrt: Don't forward strrchr to ntdll. 2013-09-17 16:25:23 +02:00
Piotr Caban 31d92b926e msvcrt: Don't forward strncat to ntdll. 2013-09-17 16:25:04 +02:00
Piotr Caban f0ec9b134a msvcrt: Don't forward strlen to ntdll. 2013-09-17 16:24:58 +02:00
Piotr Caban 1803016c08 msvcrt: Don't forward strcmp to ntdll. 2013-09-17 16:24:53 +02:00
Piotr Caban 5b1f7f8549 msvcrt: Don't forward memmove to ntdll. 2013-09-17 16:24:46 +02:00
Piotr Caban 4fbf246298 msvcrt: Don't forward memcmp to ntdll. 2013-09-17 16:24:39 +02:00
Álvaro Nieto e3e1284557 msvrct: Fix strncpy to fill the buffer. 2013-08-16 20:49:36 +02:00
Piotr Caban bba1db0905 msvcrt: Don't forward memchr to ntdll. 2013-06-21 16:23:35 +02:00
Piotr Caban f3eb64ec73 msvcrt: Don't detect overflow in atoi implementation. 2013-06-04 21:01:13 +02:00
Jactry Zeng 7cd91b6452 msvcrt: Fixed typo of _strncoll and _strncoll_l. 2013-04-29 20:30:55 +02:00
Piotr Caban b626556272 msvcrt: Don't forward strncpy to ntdll. 2013-03-27 20:12:29 +01:00
Piotr Caban e66e950459 msvcrt: Don't forward strncmp to ntdll. 2013-03-27 20:12:29 +01:00
Piotr Caban bf237452ef msvcrt: Don't forward strchr to ntdll. 2013-03-27 20:12:29 +01:00
Piotr Caban 1278080901 msvcrt: Don't forward memset to ntdll. 2013-03-27 20:12:29 +01:00
Piotr Caban 15b40e7b9c msvcrt: Don't forward atoi to ntdll. 2013-03-27 20:12:29 +01:00
Piotr Caban 737bb1bb18 msvcrt: Fixed copied buffer size in _ui64tow_s. 2013-03-25 16:28:07 +01:00
Piotr Caban 6382bc5219 msvcrt: Don't call invalid parameter handler in str{n,i}cmp functions. 2013-01-28 14:06:09 +01:00
Piotr Caban eaa1b70603 msvcrt: Added _strnicmp_l implementation. 2012-12-26 18:23:05 +01:00
Piotr Caban dbec250635 msvcrt: Added _stricmp_l implementation. 2012-12-24 13:34:04 +01:00
Piotr Caban 0c91daee8b msvcrt: Use LC_COLLATE category in strcoll functions. 2012-12-18 12:38:39 +01:00
Piotr Caban 3b5ab1b48f msvcrt: Added _atodbl_l implementation. 2012-12-17 20:31:25 +01:00
Piotr Caban 38bf8ac44b msvcrt: Don't duplicate floating-point number parsing code in MSVCRT__atoflt_l. 2012-12-17 20:31:24 +01:00
Austin English c8e71e9a3e msvcrt: Implement memcpy in msvcrt instead of forwarding to ntdll. 2012-12-14 12:15:05 +01:00
Piotr Caban b5cf3057e9 msvcrt: Added _atoi_l implementation. 2012-12-12 12:00:46 +01:00
Piotr Caban cbb94b1fcc msvcrt: Improved strtod_l precision. 2012-11-06 16:02:36 +01:00
Piotr Caban a3035679d5 msvcrt: Improved _atoflt_l precision. 2012-11-06 16:02:35 +01:00
Alexandre Julliard 06989a0483 msvcrt: Make sure that errno is always set when calling the invalid parameter handler. 2012-07-26 11:05:32 +02:00
Francois Gouget d817bbd6f4 msvcrt: Use the CSTR_XXX macros instead of numeric literals. 2012-06-21 08:33:36 +02:00
Eric Pouech d7bc2eff2f msvcrt: Implemented _ultow_s. 2011-11-29 13:23:47 +01:00
Francois Gouget 7da4305aec msvcrt: Fix printing NULL strings. 2011-09-20 16:21:39 +02:00
Piotr Caban e398b93900 msvcrt: Improved tolower_l and toupper_l implementation. 2011-06-03 17:44:06 +02:00
Piotr Caban f9de4eef75 msvcrt: Fix mingw compilation issues. 2011-06-03 17:44:06 +02:00
Piotr Caban 6991ac0331 msvcrt: Use get_locinfo instead of get_locale. 2011-05-25 11:45:42 +02:00
Piotr Caban c43176b094 msvcrt: Fix return values in strlwr and strupr functions. 2011-05-16 16:36:01 +02:00
Piotr Caban b5d1d8e2b5 msvcrt: Added _strnicoll_l implementation. 2011-05-12 14:28:12 +02:00