[gnumeric] Fix chart export/import issues with xls format. [#705311][#705353]



commit 89f0616db627157357c7b68478f88019dfc8f775
Author: Jean Brefort <jean brefort normalesup org>
Date:   Fri Aug 2 19:47:08 2013 +0200

    Fix chart export/import issues with xls format. [#705311][#705353]

 NEWS                     |    9 ++++-----
 plugins/excel/ChangeLog  |    7 +++++++
 plugins/excel/ms-chart.c |    9 +++++++--
 3 files changed, 18 insertions(+), 7 deletions(-)
---
diff --git a/NEWS b/NEWS
index 33b5d5f..7d35a32 100644
--- a/NEWS
+++ b/NEWS
@@ -9,21 +9,20 @@ Andreas:
        * Improve import to ODF of empty cells with default column styles. [#704563]
        * Speed up loading of some ODF files. [#704422]
        * Fix ODF style import. [#704563]
-       * Fix crash on corrupted files. [#704636] [#705032] [#705031] [#705101] [#705172]
+       * Fix crash on corrupted files. [#704636]
        * Fix ODF import of charts with series consisting of multiple ranges. [#704742]
        * Fix ODF export of charts with series consisting of multiple ranges.
-       * Do not show placeholders in function tooltip. [#705049]
-       * Export/import input messages to/from ODF. [#705111]
 
 Jean:
        * Fix text wrap inside sheet objects. [#704417]
+       * Fix export of scatter/bubble plots to xls. [#705311]
+       * Fix crash when importing fuzzed chart from xls. [#705353]
 
 Morten:
        * Fix crazy parsing problem.  [#704109] [#704140]
        * Fix crashes on corrupted files.  [#704102] [#704004] [#704325]
-       [#704562] [#705319]
+       [#704562]
        * Fix conditional format problem.  [#704445]
-       * Plug leak.  [#704820]
 
 --------------------------------------------------------------------------
 Gnumeric 1.12.4
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 39287c7..0a5323b 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,10 @@
+2013-08-02  Jean Brefort  <jean brefort normalesup org>
+
+       * ms-chart.c (axislineformat): fix crah on fuzzed xls reading [#705353],
+       (chart_write_AI): write all formulas to .xls, even if not  supported by
+       excel [#705311],
+       (chart_write_plot): export bubble size scale. [see #705311]
+
 2013-08-01  Morten Welinder  <terra gnome org>
 
        * ms-excel-read.c (excel_read_MULRK): Fix sanity check.  Fixes
diff --git a/plugins/excel/ms-chart.c b/plugins/excel/ms-chart.c
index 8bdb65c..cceb692 100644
--- a/plugins/excel/ms-chart.c
+++ b/plugins/excel/ms-chart.c
@@ -641,7 +641,7 @@ BC_R(axislineformat)(XLChartHandler const *handle,
                                NULL);
                        if (s->axislineflags == 8)
                                g_object_set (s->axis, "invisible", TRUE, NULL);
-                       else {
+                       else if (q->length >= 10) {
                                /* deleted axis sets flag here, rather than in TICK */
                                if (0 == (0x4 & GSF_LE_GET_GUINT16 (q->data+8)))
                                        g_object_set (G_OBJECT (s->axis),
@@ -4259,6 +4259,8 @@ chart_write_AI (XLChartWriteState *s, GOData const *dim, unsigned n,
                                        ref_type = 2;
                        } else if ((value = gnm_expr_top_get_constant (texpr)))
                                ref_type = 1;
+                       else /* might be any expression */
+                               ref_type = 2;
                } else {
                        char *str = go_data_serialize (dim, (gpointer)gnm_conventions_default);
                        ref_type = 1;
@@ -5141,13 +5143,16 @@ chart_write_plot (XLChartWriteState *s, GogPlot const *plot)
                                check_marks = check_lines = TRUE;
                        } else {
                                gboolean show_neg = FALSE, in_3d = FALSE, as_area = TRUE;
+                               double scale;
                                g_object_get (G_OBJECT (plot),
                                        "show-negatives",       &show_neg,
                                        "in-3d",                &in_3d,
                                        "size-as-area",         &as_area,
+                                       "bubble-scale",         &scale,
                                        NULL);
+                               scale *= 100.;
                                /* TODO : find accurate size */
-                               GSF_LE_SET_GUINT16 (data + 0, 100);
+                               GSF_LE_SET_GUINT16 (data + 0, (guint16) scale);
                                GSF_LE_SET_GUINT16 (data + 2, as_area ? 1 : 2);
 
                                flags = 1;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]