Source: goffice-0.8
Followup-For: Bug #812013
For the go_format_odf_style_map() issue, the fix is simply to make the format
string
itself constant. Patch attached.
I can't see a way to make g_object_set_property()'s error_template parameter
safe, except
by sanity-checking in the function itself. One would probably have to turn the
warning
off for this file...
diff -ru goffice-0.8-0.8.17/goffice/utils/go-format.c goffice-0.8-0.8.17+/goffice/utils/go-format.c
--- goffice-0.8-0.8.17/goffice/utils/go-format.c 2011-06-17 00:46:51.000000000 +0200
+++ goffice-0.8-0.8.17+/goffice/utils/go-format.c 2016-07-01 10:50:12.072984065 +0200
@@ -5537,7 +5537,7 @@
char *
go_format_odf_style_map (GOFormat const *fmt, int cond_part)
{
- char const *format_string = NULL;
+ char const *op = NULL;
g_return_val_if_fail (fmt != NULL, NULL);
g_return_val_if_fail (fmt->typ == GO_FMT_COND, NULL);
@@ -5547,29 +5547,29 @@
switch (fmt->u.cond.conditions[cond_part].op) {
case GO_FMT_COND_EQ:
- format_string = "value()=%g";
+ op = "=";
break;
case GO_FMT_COND_NE:
- format_string = "value()!=%g";
+ op = "!=";
break;
case GO_FMT_COND_NONTEXT: /* Under certain circumstances this */
/*appears for second of two conditions */
case GO_FMT_COND_LT:
- format_string = "value()<%g";
+ op = "<";
break;
case GO_FMT_COND_LE:
- format_string = "value()<=%g";
+ op = "<=";
break;
case GO_FMT_COND_GT:
- format_string = "value()>%g";
+ op = ">";
break;
case GO_FMT_COND_GE:
- format_string = "value()>=%g";
+ op = ">=";
break;
default:
return NULL;
}
- return g_strdup_printf (format_string,
+ return g_strdup_printf ("value()%s%g", op,
fmt->u.cond.conditions[cond_part].val);
}