summaryrefslogtreecommitdiff
path: root/external/dtoa
AgeCommit message (Collapse)Author
2020-03-04always include assert.h and don't provide a different assert defineCaolán McNamara
rely on the -DNDEBUG we pass in on non-debug builds to to disable assert Change-Id: I089be56aa6fcddb78507bb0f0457c67c226437a5 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89989 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-03-04ofz#21036: Avoid UBSan signed-integer-overflow in external/dtoaStephan Bergmann
> workdir/UnpackedTarball/dtoa/src/dtoa.c:3624:12: runtime error: signed integer overflow: 10 * 858993459 cannot be represented in type 'int' > #0 in strtod_nolocale at workdir/UnpackedTarball/dtoa/src/dtoa.c:3624:12 (instdir/program/libuno_sal.so.3 +0x55286d) > #1 in double (anonymous namespace)::stringToDouble<char16_t>(char16_t const*, char16_t const*, char16_t, char16_t, rtl_math_ConversionStatus*, char16_t const**) at sal/rtl/math.cxx:976:20 (instdir/program/libuno_sal.so.3 +0x3b5f0e) > #2 in rtl_math_uStringToDouble at sal/rtl/math.cxx:1028:12 (instdir/program/libuno_sal.so.3 +0x3b1714) [...] Change-Id: If24fca1fb4829ddd763c9920a1af9a90dc2b138c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89966 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-03-03Use thread_local statics in dtoa.c to be thread-safeMike Kaganski
We don't use MULTIPLE_THREADS for that to avoid performance penalty due to locking and memory allocation. Use dtoa.cxx stub to compile dtoa.c as C++, to allow using thread_local keyword in MSVC, which still implements pre-C99. Also don't expose dtoa() and other symbols - make them static. And define IEEE_MC68k, not IEEE_8087 on big endian platforms. Change-Id: Ie59fe0cf057b043556a5ac15ec6b11a1a5b41f47 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89629 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins
2020-03-03silence dtoa coverity warningsCaolán McNamara
there isn't a --with-system-dtoa option so add an explicit patch Change-Id: I6ae00fefd3352b1501da3e94e108d3183f951907 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89870 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com>
2020-02-28Adapt Clang -fsanitize jurt/source/pipe/staticsalhack.cxxStephan Bergmann
...to 1782810f886acd26db211d8fdd7ae8796d203c57 "Related: tdf#130725: use strtod also in rtl::math::stringToDouble". The sal code recompiled into staticsalhack now uses StaticLibrary_dtoa, and that external/dtoa code needs to be recompiled, too. Change-Id: I60a88fc2b38766da36b356f89853f322657bde34 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89662 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-02-27Add boilerplate external/dtoa/MakefileStephan Bergmann
(to make toplevel `make dtoa` work) Change-Id: I5ce6566ae637d71912cbd93f79f0649a6f690047 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89631 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
2020-02-27tdf#130725: use strtod by David M. Gay to make sure we get the nearestMike Kaganski
... representation of given decimal. Use dtoa.c from https://www.netlib.org/fp/dtoa.c to build a custom static library that doesn't use current locale (unlike strtod from stdlib.h). This is the implementation used by e.g. python and nss (search for "dtoa.c" under UnpackedTarball). To avoid name clash with the standard strtod, rename the function to strtod_nolocale. Size of buffer on stack in ImpSvNumberInputScan::StringToDouble is 256 characters. Logging function usage in make check, of ~124 600 invocations, the longest string was 14 characters, average being 2.1 characters. So heap allocation is unlikely in scenarios with intensive function usage. After std::from_chars is available in baseline compilers, external library can be dropped, and call to strtod_nolocale replaced with the standard function. The artifact at https://dev-www.libreoffice.org/src/dtoa-20180411.tgz is created with mkdir dtoa && mkdir dtoa/src && wget https://www.netlib.org/fp/dtoa.c -O dtoa/src/dtoa.c && \ printf 'd8bab255476f39ea495c8c8ed164f9077da926e6ca7afb9ad3c56d337c4484fe dtoa/src/dtoa.c' | sha256sum -c && \ tar -c --owner=0 --group=0 --mode=go=r,u=rw --mtime='Wed, 11 Apr 2018 15:59:39 GMT' dtoa/src/dtoa.c | gzip -n > dtoa-20180411.tgz && \ printf '0082d0684f7db6f62361b76c4b7faba19e0c7ce5cb8e36c4b65fea8281e711b4 dtoa-20180411.tgz' | sha256sum -c (where the date "Wed, 11 Apr 2018 15:59:39 GMT" is from `wget -S https://www.netlib.org/fp/dtoa.c` "Last-Modified: Wed, 11 Apr 2018 15:59:39 GMT" header). Change-Id: Ia61b7678e257c4bc1ff193f3f856d611aa5c1a21 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88854 Tested-by: Jenkins Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>