[PATCH] ucrtbase: Add partial strtold implementation.

Gijs Vermeulen gijsvrm at gmail.com
Sun Oct 4 19:07:43 CDT 2020


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49873
Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
---
 .../api-ms-win-crt-convert-l1-1-0.spec              |  2 +-
 .../api-ms-win-crt-private-l1-1-0.spec              |  2 +-
 dlls/msvcr120/msvcr120.spec                         |  2 +-
 dlls/msvcr120_app/msvcr120_app.spec                 |  2 +-
 dlls/msvcrt/string.c                                | 13 +++++++++++++
 dlls/ucrtbase/ucrtbase.spec                         |  4 ++--
 6 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec b/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec
index a67828e6d22..f3585ccf3b0 100644
--- a/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec
+++ b/dlls/api-ms-win-crt-convert-l1-1-0/api-ms-win-crt-convert-l1-1-0.spec
@@ -96,7 +96,7 @@
 @ cdecl strtof(str ptr) ucrtbase.strtof
 @ cdecl -ret64 strtoimax(str ptr long) ucrtbase.strtoimax
 @ cdecl strtol(str ptr long) ucrtbase.strtol
-@ stub strtold
+@ cdecl strtold(str ptr) ucrtbase.strtold
 @ cdecl -ret64 strtoll(str ptr long) ucrtbase.strtoll
 @ cdecl strtoul(str ptr long) ucrtbase.strtoul
 @ cdecl -ret64 strtoull(str ptr long) ucrtbase.strtoull
diff --git a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec
index 87dc6585f3c..fe5d0c4b11d 100644
--- a/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec
+++ b/dlls/api-ms-win-crt-private-l1-1-0/api-ms-win-crt-private-l1-1-0.spec
@@ -1126,7 +1126,7 @@
 @ cdecl _o_strtok(str str) ucrtbase._o_strtok
 @ cdecl _o_strtok_s(ptr str ptr) ucrtbase._o_strtok_s
 @ cdecl _o_strtol(str ptr long) ucrtbase._o_strtol
-@ stub _o_strtold
+@ cdecl _o_strtold(str ptr) ucrtbase._o_strtold
 @ cdecl -ret64 _o_strtoll(str ptr long) ucrtbase._o_strtoll
 @ cdecl _o_strtoul(str ptr long) ucrtbase._o_strtoul
 @ cdecl -ret64 _o_strtoull(str ptr long) ucrtbase._o_strtoull
diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec
index 0d38f97fffe..3a45084d8b0 100644
--- a/dlls/msvcr120/msvcr120.spec
+++ b/dlls/msvcr120/msvcr120.spec
@@ -2391,7 +2391,7 @@
 @ cdecl strtok(str str) MSVCRT_strtok
 @ cdecl strtok_s(ptr str ptr) MSVCRT_strtok_s
 @ cdecl strtol(str ptr long) MSVCRT_strtol
-@ stub strtold
+@ cdecl strtold(str ptr) MSVCRT_strtold
 @ cdecl -ret64 strtoll(str ptr long) MSVCRT_strtoi64
 @ cdecl strtoul(str ptr long) MSVCRT_strtoul
 @ cdecl -ret64 strtoull(str ptr long) MSVCRT_strtoui64
diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec
index 2013b06cc7c..a50697c5e41 100644
--- a/dlls/msvcr120_app/msvcr120_app.spec
+++ b/dlls/msvcr120_app/msvcr120_app.spec
@@ -2054,7 +2054,7 @@
 @ cdecl strtok(str str) msvcr120.strtok
 @ cdecl strtok_s(ptr str ptr) msvcr120.strtok_s
 @ cdecl strtol(str ptr long) msvcr120.strtol
-@ stub strtold
+@ cdecl strtold(str ptr) msvcr120.strtold
 @ cdecl -ret64 strtoll(str ptr long) msvcr120.strtoll
 @ cdecl strtoul(str ptr long) msvcr120.strtoul
 @ cdecl -ret64 strtoull(str ptr long) msvcr120.strtoull
diff --git a/dlls/msvcrt/string.c b/dlls/msvcrt/string.c
index 3343f1e3ccf..abf1c867a16 100644
--- a/dlls/msvcrt/string.c
+++ b/dlls/msvcrt/string.c
@@ -1058,6 +1058,19 @@ double CDECL MSVCRT_strtod( const char *str, char **end )
 
 #if _MSVCR_VER>=120
 
+/*********************************************************************
+ *      strtold  (MSVCR120.@)
+ */
+long double CDECL MSVCRT_strtold( const char *str, char **end )
+{
+#ifdef HAVE_STRTOLD
+    return strtold( str, end );
+#else
+    FIXME( "strtold not available!\n" );
+    return 0;
+#endif
+}
+
 /*********************************************************************
  *		strtof_l  (MSVCR120.@)
  */
diff --git a/dlls/ucrtbase/ucrtbase.spec b/dlls/ucrtbase/ucrtbase.spec
index f556b9e1c3d..18afedfdf5b 100644
--- a/dlls/ucrtbase/ucrtbase.spec
+++ b/dlls/ucrtbase/ucrtbase.spec
@@ -1791,7 +1791,7 @@
 @ cdecl _o_strtok(str str) MSVCRT_strtok
 @ cdecl _o_strtok_s(ptr str ptr) MSVCRT_strtok_s
 @ cdecl _o_strtol(str ptr long) MSVCRT_strtol
-@ stub _o_strtold
+@ cdecl _o_strtold(str ptr) MSVCRT_strtold
 @ cdecl -ret64 _o_strtoll(str ptr long) MSVCRT_strtoi64
 @ cdecl _o_strtoul(str ptr long) MSVCRT_strtoul
 @ cdecl -ret64 _o_strtoull(str ptr long) MSVCRT_strtoui64
@@ -2522,7 +2522,7 @@
 @ cdecl strtok(str str) MSVCRT_strtok
 @ cdecl strtok_s(ptr str ptr) MSVCRT_strtok_s
 @ cdecl strtol(str ptr long) MSVCRT_strtol
-@ stub strtold
+@ cdecl strtold(str ptr) MSVCRT_strtold
 @ cdecl -ret64 strtoll(str ptr long) MSVCRT_strtoi64
 @ cdecl strtoul(str ptr long) MSVCRT_strtoul
 @ cdecl -ret64 strtoull(str ptr long) MSVCRT_strtoui64
-- 
2.28.0




More information about the wine-devel mailing list