[gnumeric] Fix error bars when data are in a multi-column array. [#594]



commit d9cbc8882d15237be96edea63b1dc480223fdc17
Author: Jean Brefort <jean brefort normalesup org>
Date:   Sat Sep 18 07:16:46 2021 +0200

    Fix error bars when data are in a multi-column array. [#594]

 ChangeLog   |  5 +++++
 NEWS        |  3 +++
 src/graph.c | 29 +++++------------------------
 3 files changed, 13 insertions(+), 24 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index a01bc9ac9..a18c70399 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2021-09-18  Jean Brefort  <jean brefort normalesup org>
+
+       * src/graph.c (gnm_go_data_vector_get_value): fix error bars when data
+       are in a multi-column array. [#594]
+
 2021-06-10  Morten Welinder <terra gnome org>
 
        * configure.ac: Post-release bump.
diff --git a/NEWS b/NEWS
index 9e2b15cca..2055a4805 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
 Gnumeric 1.12.51
 
+Jean:
+       * Fix error bars when data are in a multi-column array. [#594]
+
 --------------------------------------------------------------------------
 Gnumeric 1.12.50
 
diff --git a/src/graph.c b/src/graph.c
index 8528341a8..163058056 100644
--- a/src/graph.c
+++ b/src/graph.c
@@ -854,35 +854,16 @@ static double
 gnm_go_data_vector_get_value (GODataVector *dat, unsigned i)
 {
        GnmGODataVector *vec = (GnmGODataVector *)dat;
-       GnmValue *v;
-       GnmEvalPos ep;
-       gboolean valid = FALSE;
 
        if (vec->val == NULL)
                gnm_go_data_vector_load_len (dat);
 
-       if (VALUE_IS_ARRAY (vec->val)) {
-               if ((dat->base.flags & GO_DATA_CACHE_IS_VALID) == 0)
-                       gnm_go_data_vector_load_values (dat);
-               return dat->values[i];
-       } else {
-               eval_pos_init_dep (&ep, &vec->dep);
-               v = value_dup (vec->as_col
-                       ? value_area_get_x_y (vec->val, 0, i, &ep)
-                       : value_area_get_x_y (vec->val, i, 0, &ep));
-               if (NULL == v)
-                       return go_nan;
-
-               v = value_coerce_to_number (v, &valid, &ep);
-               if (valid) {
-                       gnm_float res = value_get_as_float (v);
-                       value_release (v);
-                       return res;
-               }
-               value_release (v);
-       }
-       return go_nan;
+       if (dat->len <= 0)
+               return go_nan;
 
+       if ((dat->base.flags & GO_DATA_CACHE_IS_VALID) == 0)
+               gnm_go_data_vector_load_values (dat);
+       return (i < (unsigned) dat->len)? dat->values[i]: go_nan;
 }
 
 struct string_closure {


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