[goffice] Fix engineering format. [#785669]
- From: Jean Bréfort <jbrefort src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goffice] Fix engineering format. [#785669]
- Date: Thu, 3 Aug 2017 17:29:37 +0000 (UTC)
commit c7c0383897dfd672ba12e08d7997023e0cee7aa9
Author: Jean Brefort <jean brefort normalesup org>
Date: Thu Aug 3 19:29:09 2017 +0200
Fix engineering format. [#785669]
ChangeLog | 5 +++++
NEWS | 3 +++
goffice/utils/go-format.c | 8 +++++---
3 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 680862e..dff7c42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2017-08-03 Jean Brefort <jean brefort normalesup org>
+
+ * goffice/utils/go-format.c (printf_engineering): fix engineering format.
+ [#785669]
+
2017-07-06 Morten Welinder <terra gnome org>
* configure.ac: Post-release bump.
diff --git a/NEWS b/NEWS
index ff0f33b..4d0caaf 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
goffice 0.10.36:
+Jean:
+ * Fix engineering format. [#785669]
+
--------------------------------------------------------------------------
goffice 0.10.35:
diff --git a/goffice/utils/go-format.c b/goffice/utils/go-format.c
index 0954c2b..6719671 100644
--- a/goffice/utils/go-format.c
+++ b/goffice/utils/go-format.c
@@ -2891,6 +2891,7 @@ SUFFIX(printf_engineering) (GString *dst, DOUBLE val, int n, int wd)
exponent = atoi (epos + 1);
g_string_truncate (dst, epos - dst->str);
+ dot = (char *)strstr (dst->str, decimal->str);
if (exponent != exponent_guess) {
/*
* We rounded from 9.99Exx to
@@ -2900,11 +2901,13 @@ SUFFIX(printf_engineering) (GString *dst, DOUBLE val, int n, int wd)
nde = (nde + 1) % wd;
if (nde == 0)
g_string_truncate (dst, dst->len - (wd - 1));
- else
+ else if (dot) /* only add a 0 when a decimal separator is present,
+ * see #785669 */
g_string_append_c (dst, '0');
}
- dot = (char *)strstr (dst->str, decimal->str);
+ /* we need to adjust exponent before any modification to nde, see #785669 */
+ exponent -= nde;
if (dot) {
memmove (dot, dot + decimal->len, nde);
memcpy (dot + nde, decimal->str, decimal->len);
@@ -2914,7 +2917,6 @@ SUFFIX(printf_engineering) (GString *dst, DOUBLE val, int n, int wd)
nde--;
}
}
- exponent -= nde;
g_string_append_printf (dst, "E%+d", exponent);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]