[gnumeric] Fix #610372



commit dc8b2f690056c1df5767d656bafecfde67de074c
Author: Andreas J. Guelzow <aguelzow pyrshep ca>
Date:   Thu Feb 18 14:37:54 2010 -0700

    Fix #610372
    
    2010-02-18  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* xlsx-write.c (xlsx_write_cells): use value_get_as_gstring
    	  rather than value_get_as_string. [#610372]
    
    2010-02-18  Andreas J. Guelzow <aguelzow pyrshep ca>
    
    	* openoffice-write.c (odf_write_cell): use value_get_as_gstring
    	  rather than value_get_as_float [#610372]
    	(odf_write_filter_cond): use value_get_as_gstring rather than
    	  value_get_as_string [#610372]

 plugins/excel/ChangeLog               |    5 +++++
 plugins/excel/xlsx-write.c            |    7 ++++---
 plugins/openoffice/ChangeLog          |   11 +++++++++--
 plugins/openoffice/openoffice-write.c |   30 ++++++++++++++++++------------
 4 files changed, 36 insertions(+), 17 deletions(-)
---
diff --git a/plugins/excel/ChangeLog b/plugins/excel/ChangeLog
index 8966f40..cd35faa 100644
--- a/plugins/excel/ChangeLog
+++ b/plugins/excel/ChangeLog
@@ -1,3 +1,8 @@
+2010-02-18  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* xlsx-write.c (xlsx_write_cells): use value_get_as_gstring
+	  rather than value_get_as_string. [#610372]
+	
 2010-02-13  Morten Welinder <terra gnome org>
 
 	* Release 1.10.0
diff --git a/plugins/excel/xlsx-write.c b/plugins/excel/xlsx-write.c
index 9087bef..d1ccdad 100644
--- a/plugins/excel/xlsx-write.c
+++ b/plugins/excel/xlsx-write.c
@@ -433,9 +433,10 @@ xlsx_write_cells (XLSXWriteState *state, GsfXMLOut *xml, GnmRange const *extent)
 						gsf_xml_out_add_int (xml, NULL, str_id);
 						str_id = -1;
 					} else if (val->type != VALUE_BOOLEAN) {
-						content = value_get_as_string (cell->value);
-						gsf_xml_out_add_cstr (xml, NULL, content);
-						g_free (content);
+						GString *str = g_string_new (NULL);
+						value_get_as_gstring (cell->value, str, state->convs);
+						gsf_xml_out_add_cstr (xml, NULL, str->str);
+						g_string_free (str, TRUE);
 					} else
 						xlsx_add_bool (xml, NULL, val->v_bool.val);
 					gsf_xml_out_end_element (xml); /* </v> */
diff --git a/plugins/openoffice/ChangeLog b/plugins/openoffice/ChangeLog
index 9901bf4..c3df528 100644
--- a/plugins/openoffice/ChangeLog
+++ b/plugins/openoffice/ChangeLog
@@ -1,7 +1,14 @@
 2010-02-18  Andreas J. Guelzow <aguelzow pyrshep ca>
 
-	* openoffice-write.c (odf_write_cell): Sore error literals
-	  as assignment. FIxes #610175.
+	* openoffice-write.c (odf_write_cell): use value_get_as_gstring
+	  rather than value_get_as_float [#610372]
+	(odf_write_filter_cond): use value_get_as_gstring rather than
+	  value_get_as_string [#610372]
+
+2010-02-18  Andreas J. Guelzow <aguelzow pyrshep ca>
+
+	* openoffice-write.c (odf_write_cell): Store error literals
+	  as assignment. Fixes #610175.
 
 2010-02-18  Morten Welinder  <terra gnome org>
 
diff --git a/plugins/openoffice/openoffice-write.c b/plugins/openoffice/openoffice-write.c
index be28371..70185bf 100644
--- a/plugins/openoffice/openoffice-write.c
+++ b/plugins/openoffice/openoffice-write.c
@@ -2359,13 +2359,16 @@ odf_write_cell (GnmOOExport *state, GnmCell *cell, GnmRange const *merge_range,
 			odf_add_bool (state->xml, OFFICE "boolean-value",
 				value_get_as_bool (cell->value, NULL));
 			break;
-		case VALUE_FLOAT:
+		case VALUE_FLOAT: {
+			GString *str = g_string_new (NULL);
+
 			gsf_xml_out_add_cstr_unchecked (state->xml,
 							OFFICE "value-type", "float");
-			gsf_xml_out_add_float (state->xml, OFFICE "value",
-					       value_get_as_float
-					       (cell->value),
-					       -1);
+			value_get_as_gstring (cell->value, str, state->conv);
+			gsf_xml_out_add_cstr (state->xml, OFFICE "value", str->str);
+
+			g_string_free (str, TRUE);
+		}
 			break;
 		case VALUE_ERROR:
 			if (NULL == cell->base.texpr) {
@@ -2421,7 +2424,7 @@ odf_write_cell (GnmOOExport *state, GnmCell *cell, GnmRange const *merge_range,
 			GString *str = g_string_new (NULL);
 			const PangoAttrList * markup;
 
-			value_get_as_gstring (cell->value, str, NULL);
+			value_get_as_gstring (cell->value, str, state->conv);
 			markup = go_format_get_markup (VALUE_FMT (cell->value));
 
 			gsf_xml_out_start_element (state->xml, TEXT "p");
@@ -2766,7 +2769,7 @@ odf_write_filter_cond (GnmOOExport *state, GnmFilter const *filter, int i)
 {
 	GnmFilterCondition const *cond = gnm_filter_get_condition (filter, i);
 	char const *op, *type = NULL;
-	char *val_str = NULL;
+	GString *val_str = NULL;
 
 	if (cond == NULL)
 		return;
@@ -2793,23 +2796,26 @@ odf_write_filter_cond (GnmOOExport *state, GnmFilter const *filter, int i)
 	}
 
 	if (GNM_FILTER_OP_TYPE_BUCKETS == (cond->op[0] & GNM_FILTER_OP_TYPE_MASK)) {
+		val_str = g_string_new (NULL);
 		type = "number";
-		val_str = g_strdup_printf ("%g", cond->count);
+		g_string_printf (val_str, "%g", cond->count);
 	} else if (GNM_FILTER_OP_TYPE_BLANKS  != (cond->op[0] & GNM_FILTER_OP_TYPE_MASK)) {
+		val_str = g_string_new (NULL);
 		type = VALUE_IS_FLOAT (cond->value[0]) ? "number" : "text";
-		val_str = value_get_as_string (cond->value[0]);
+		value_get_as_gstring (cond->value[0], val_str, state->conv);
 	}
 
 	gsf_xml_out_start_element (state->xml, TABLE "filter-condition");
 	gsf_xml_out_add_int (state->xml, TABLE "field-number", i);
-	if (NULL != type) {
+	if (NULL != type && val_str != NULL) {
 		gsf_xml_out_add_cstr_unchecked (state->xml, TABLE "data-type", type);
-		gsf_xml_out_add_cstr (state->xml, TABLE "value", val_str);
+		gsf_xml_out_add_cstr (state->xml, TABLE "value", val_str->str);
 	}
 	gsf_xml_out_add_cstr_unchecked (state->xml, TABLE "operator", op);
 	gsf_xml_out_end_element (state->xml); /* </table:filter-condition> */
 
-	g_free (val_str);
+	if (val_str)
+		g_string_free (val_str, TRUE);
 }
 
 static void



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