diff options
author | David Tardon <dtardon@redhat.com> | 2016-08-12 13:11:38 +0200 |
---|---|---|
committer | David Tardon <dtardon@redhat.com> | 2016-08-12 13:16:18 +0200 |
commit | 8d26a169794083f047a57e5c8d3f5da0aaab2583 (patch) | |
tree | 80a6ae817a9c775c1f85210b2452a5061ba39d00 /external | |
parent | 6020cded6bb815131482fb6d6aedb290e425839c (diff) |
tdf#101077 make double->str conv. locale-agnostic
Change-Id: Ibb87f4a14fda6957149ca52083387760ff6e60a3
Diffstat (limited to 'external')
-rw-r--r-- | external/libodfgen/0001-tdf-101077-make-double-string-conversion-locale-agno.patch.1 | 58 | ||||
-rw-r--r-- | external/libodfgen/UnpackedTarball_libodfgen.mk | 3 |
2 files changed, 61 insertions, 0 deletions
diff --git a/external/libodfgen/0001-tdf-101077-make-double-string-conversion-locale-agno.patch.1 b/external/libodfgen/0001-tdf-101077-make-double-string-conversion-locale-agno.patch.1 new file mode 100644 index 000000000000..1fc4e6b9d261 --- /dev/null +++ b/external/libodfgen/0001-tdf-101077-make-double-string-conversion-locale-agno.patch.1 @@ -0,0 +1,58 @@ +From 68e0c8e4c834df57bc9a0e8da72151f69ff5e7a6 Mon Sep 17 00:00:00 2001 +From: David Tardon <dtardon@redhat.com> +Date: Fri, 12 Aug 2016 12:50:39 +0200 +Subject: [PATCH] tdf#101077 make double->string conversion locale-agnostic + +--- + src/OdsGenerator.cxx | 19 +++++++++++++++++-- + 1 file changed, 17 insertions(+), 2 deletions(-) + +diff --git a/src/OdsGenerator.cxx b/src/OdsGenerator.cxx +index 52e135e..8cb7203 100644 +--- a/src/OdsGenerator.cxx ++++ b/src/OdsGenerator.cxx +@@ -26,6 +26,8 @@ + + #include <librevenge/librevenge.h> + ++#include <iomanip> ++#include <locale> + #include <map> + #include <stack> + #include <sstream> +@@ -46,6 +48,19 @@ + #include "OdcGenerator.hxx" + #include "OdfGenerator.hxx" + ++namespace ++{ ++ ++librevenge::RVNGString makePreciseStr(const double value) ++{ ++ std::ostringstream os; ++ os.imbue(std::locale::classic()); ++ os << std::fixed << std::setprecision(8) << value; ++ return os.str().c_str(); ++} ++ ++} ++ + class OdsGeneratorPrivate : public OdfGenerator + { + public: +@@ -968,10 +983,10 @@ void OdsGenerator::openSheetCell(const librevenge::RVNGPropertyList &propList) + // we need the maximum precision here, so we must avoid getStr() when possible + librevenge::RVNGString value; + if (propList["librevenge:value"]->getUnit()==librevenge::RVNG_GENERIC) +- value.sprintf("%.8f", propList["librevenge:value"]->getDouble()); ++ value = makePreciseStr(propList["librevenge:value"]->getDouble()); + else if (propList["librevenge:value"]->getUnit()==librevenge::RVNG_PERCENT) + { +- value.sprintf("%.8f", propList["librevenge:value"]->getDouble()*100.); ++ value = makePreciseStr(propList["librevenge:value"]->getDouble()*100.); + value.append('%'); + } + else +-- +2.7.4 + diff --git a/external/libodfgen/UnpackedTarball_libodfgen.mk b/external/libodfgen/UnpackedTarball_libodfgen.mk index 3cbeb5502d08..f6695d90fb03 100644 --- a/external/libodfgen/UnpackedTarball_libodfgen.mk +++ b/external/libodfgen/UnpackedTarball_libodfgen.mk @@ -35,5 +35,8 @@ $(eval $(call gb_UnpackedTarball_add_patches,libodfgen, \ endif endif +$(eval $(call gb_UnpackedTarball_add_patches,libodfgen, \ + external/libodfgen/0001-tdf-101077-make-double-string-conversion-locale-agno.patch.1 \ +)) # vim: set noet sw=4 ts=4: |